【发布时间】:2013-09-01 15:33:06
【问题描述】:
我有以下 C 代码。
struct values{
int a:3;
int b:3;
int c:2;
};
void main(){
struct values v={2,-6,5};
printf("%d %d %d",v.a,v.b,v.c);
}
当我执行代码时,我得到以下输出:
2 2 1.
但是输出应该是2 -6 5,对吧?
如果我错了,请解释。
【问题讨论】:
-
你熟悉位域吗? (:3等)
-
OS X 上的 Clang 编译器给了我一个很好的警告:“从 'int' 到位域的隐式截断将值从 -6 更改为 2 [-Wconstant-conversion]” .
标签: c struct bit-fields