2015-11-20 113 views
-1

這樣的代碼:C++的sizeof(結構)

#include <stdio.h> 
int main(){ 
    struct{ 
    unsigned char a:4; 
    unsigned char b:4; 
    }i; 

    struct{ 
    unsigned char a:4; 
    unsigned char b:4; 
    unsigned char c:4; 
    }j; 

    i.a = 1; 
    i.b = 1; 
    j.a = 1; 
    j.b = 1; 
    j.c = 1; 
    printf("size of i is: %d, size of j is: %d", sizeof(i), sizeof(j)); 
    return 0; 
} 

爲什麼輸出爲1 2?意味着我擁有1個字節的大小,j擁有2個字節。我們知道unsigned char有1個字節,所以爲什麼我不等於2?我很抱歉我的英語。

回答

4

C++中的所有變量都被填充到下一個字節。 在結構i中,ab都是4位總和達1個字節。

j中,變量總計爲12位,但由於填充,大小爲2個字節。

參考:http://www.cplusplus.com/forum/general/51911/