【发布时间】:2011-05-01 09:02:11
【问题描述】:
int main ()
{
struct bit{
char f1:1;
char f2:1;
};
struct bit b;
b.f1= 0x1;
b.f2 = 0x1;
printf("%d\n",b.f1);
return 0;
}
使用 gcc 编译,代码输出 -1。不应该是1吗?是因为我在一个小端机器上编译吗?
添加:在使用 GDB 进行调试时,我看到初始化结构成员后的值为 -1。即打印前为-1。以下是 GDB 的打印输出:
(gdb) p b
$7 = {f1 = -1 '', f2 = -1 ''}
如果您需要更多调试命令,请告诉我。请提供执行此操作的命令。
【问题讨论】:
-
将
%d更改为%u看看会发生什么。请记住,当使用单个位字段时,答案是真或假,0 或非零。哦,在粘贴代码时考虑使用代码格式化程序(1 和 0 按钮)。
标签: c