我有这个简单的程序
#include <stdio.h>
int main(void)
{
unsigned int a = 0x120;
float b = 1.2;
printf("%X %X\n", b, a);
return 0;
}
我希望输出是
some-value 120 (some-value will depend on the bit pattern of `float b` )
但我看到
40000000 3FF33333
为什么被a
搞砸的价值?%X
将它的参数视为signed int
,因此它应该从堆栈中检索 4 个字节并打印 calue,b
然后获取接下来的 4 个字节打印其a
值为0x120