程序是:打印位類型爲整數?轉換過程如何?
typedef struct xp {
int a:2;
int b:2;
int c:1;
} xp;
int main(void)
{
xp x;
memset(&x, 0, sizeof(xp));
x.a = 1;
x.b = 3;
x.c = 1;
printf("%d\n",x.a);
printf("%d\n",x.b);
printf("%d\n",x.c);
return 0;
}
我得到1-1-11,爲什麼呢? a,b和c如何存儲在x中? printf(「%d \ n」,x.a);執行?
這是重複的;我知道我之前回答過這個問題。我會看看我是否可以追查下來。 – 2012-08-07 23:23:43
直到Carl發現這個重複:因爲你的編譯器將這個位域解釋爲二進制補碼。 – 2012-08-07 23:25:57
它實際上是實現定義的,無論它們是簽名還是未簽名。 – 2012-08-07 23:32:14