我有以下代码:
#include <stdio.h>
struct test
{
int x: 2;
int y: 2;
};
int main()
{
test t;
t.x = -1;
printf("%d", t.x);
return 0;
}
-1
我理解的这段代码是
如果相同的代码,%d
将被%x
格式说明符替换,如下所示:
#include <stdio.h>
struct test
{
int x: 2;
int y: 2;
};
int main()
{
test t;
t.x = -1;
printf("%x", t.x);
return 0;
}
输出变为ffffffff
。
请解释为什么会这样。
%x
打印给定参数值的十六进制表示形式。-1
以十六进制表示的二进制补码表示给您ffffffff
。
FWIW:这个结果并不特别涉及到在这里使用的比特提交的变量,因为printf()
是一个可变参数函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句