C中的位域

戈文德·库马尔·古普塔

我有以下代码:

#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

请解释为什么会这样。

苏拉夫·戈什(Sourav Ghosh)

%x打印给定参数值的十六进制表示形式。-1以十六进制表示的二进制补码表示给您ffffffff

FWIW:这个结果并不特别涉及到在这里使用的比特提交的变量,因为printf()是一个可变参数函数

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章