【发布时间】:2023-03-10 15:00:01
【问题描述】:
我有以下代码:
#include <stdio.h>
struct test
{
int x: 2;
int y: 2;
};
int main()
{
test t;
t.x = -1;
printf("%d", t.x);
return 0;
}
这个sn-p打印-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。
请解释为什么会这样。
【问题讨论】:
-
两个 sn-ps 都相同.....(已编辑)不再。 :-)
-
你认为-1的表示是什么?
-
位域无关紧要 - 如果将
-1传递给printf代替t.x,您将得到相同的结果。 -
我不明白为什么要投反对票?
-
@rakeb.void 某人有一个“愤怒的一天”。我写了唯一的答案来解释 为什么 位字段变成一个 int 并且也被否决了,没有给出任何理由......
标签: c int hex bit-fields negative-number