C++:sizeof運算符

sizeof是一個單目運算符,優先級爲2,它的用途是:由於數據類型隨系統運行環境可能導致不同,因此要知道一個變量在所有情況下的大小是很困難的,所以C定義了編譯時運算符,sizeof

sizeof(操作數);

1.若操作數是char,unsigned char ,signed char,則返回值一定是1,因爲ANSI C規定字符類型就是1個字節,下面三種寫法都會打印出1

printf("%d", sizeof(char));
printf("%d", sizeof(unsigned char));
printf("%d", sizeof(signed char));

2.除了1中的類型之外,其他的類型ANSI C沒有規定,所以返回值依賴於具體的實現

3.當操作數是指針時,sizeof依賴於具體的編譯器
4.當操作數是數組時,返回值是數組佔用的總內存字節數,下面示例會打印出16

int a[] = {1,2,3,4};
printf("%d", sizeof(a));

5.當操作數是聯合類型,則返回該聯合體內最大的那個成員類型所佔用的字節數,下面的示例會打印出8

union MyUnion
{
	int a;
	double b;
	char c;
};
MyUnion ys;
printf("%d",sizeof(ys));

6.當操作數是結構體時,則返回的是該結構體所有成員類型+不同編譯器考慮對齊的情況,也就是說,最終還是取決於不同的編譯器,例如下面的代碼在我的visual studio 2017下打印出8

struct MyStruct
{
	char a[3];
	int b;
};
MyStruct ys;
printf("%d",sizeof(ys));

總結:總體來說,sizeof會返回操作數所佔了內存多少個字節

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章