我在Win32 docs上发现了这个:
printf("Failed SCardIsValidContext - %x\n", lReturn);
行将LONG
类型的参数(long
的typedef)传递给printf
,其中printf
根据cppreference.com期望unsigned int
。这是定义明确的行为吗?如果是这样,是否与static_cast
的显式unsigned int
相同?
最佳答案
不,在C++中不行。 %x
用于无符号int,时间不长。
不,这是不确定的行为。引用C标准草案(在其中定义格式说明符的地方):
如果系统有此说明,则在Windows中可能是“OK”,但依靠这种保证将无法移植到其他系统。我怀疑该示例并非旨在证明此类格式说明符被滥用的有效性,而是偶然的。
关于c++ - %x printf说明符的类型是否为long OK?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63453975/