struct st1{
int a:1; int b:3; int c:6; int d:3;
}s1;
struct st2{
char a:3;
}s2;
int main(){
printf("%d : %d",sizeof(s1),sizeof(s2));
getchar();
}
我得到的輸出作爲2:1C尺寸結構
你會告訴我,這是如何計劃的運作方式和什麼用的:運算符(1)在這裏。
謝謝
struct st1{
int a:1; int b:3; int c:6; int d:3;
}s1;
struct st2{
char a:3;
}s2;
int main(){
printf("%d : %d",sizeof(s1),sizeof(s2));
getchar();
}
我得到的輸出作爲2:1C尺寸結構
你會告訴我,這是如何計劃的運作方式和什麼用的:運算符(1)在這裏。
謝謝
的:
限定bit-field。
在您的例子,struct st1
類型的對象在由所述編譯器選擇一些裝置使用13位。
時編譯的代碼所選擇的特定佈置起源佔用2個字節的對象。的13位不一定是那些字節的第一(或最後)。
其他結構類型(struct st2
)佔據(3個比特退出)1個字節。
的:
運營商那裏使用指定位大小字段包含有。 sizeof()
返回字節邊界的長度,所以對於第一,13位(2個字節),和用於所述第二,1個字節。
有至少價值兩件事情在這裏指出:
你的'printf'語句不正確,一個好的編譯器可能會給你一個警告......'size_t'的格式說明符是'%zu','size_t'的大小'z'和'u'因爲這是一個無符號值。 –