關於sizeof運算子

2021-06-19 09:41:13 字數 1083 閱讀 5305

1、sizeof運算子:

sizeof是乙個特殊的運算子,它有兩種形式:sizeof 表示式和sizeof (型別名).對於sizeof運算子要注意幾點:

1)如果是表示式的話,括號可以省略,但是對於型別,括號不能省;

2)sizeof求算的是所佔的空間,如果作用於表示式,這個表示式是不進行求值的,只根據型別轉換求得表示式的型別,而表示式的型別在編譯時就可以確定。

#includeint main(void)

程式執行結果為:1  4

可以看出i的值並沒有改變,可知表示式i++並沒有進行求值。

來看一道暴風影音的筆試題:

#include void main()s1;

//%u表示無符號10進製整型,%lu表示輸出無符號長整型整數

printf("%lu\n",sizeof(a1));//1

printf("%lu\n",sizeof(a2));//4

printf("%lu\n",sizeof(a3));//4// 指向指標的指標

printf("%lu\n",sizeof(a4));//101

printf("%lu\n",sizeof(a5));//40表示有10個指標陣列

printf("%lu\n",sizeof(a6));//4?

printf("%lu\n",sizeof(a7));//4?

printf("%lu\n",sizeof(s1));//8

}

接著來看如下的一道題:

int getsize(int data)

void main();

int size1=sizeof(data1); // data1就是乙個陣列

int* data2=data1;

int size2=sizeof(data2);

int size3=getsize(data1);

printf("%d,%d,%d",size1,size2,size3);//20 4 4

}

對於結構體資料進行sizeof運算會相對複雜一些。

(24)位運算子 sizeof運算子

位運算子作用於整數型別,並把運算物件看成是二進位制的集合。位運算子提供檢查和設定二進位制位的功能,滿足左結合律。但是位運算關於符號位如何處理沒有明確的規定,改變符號位的值是一種未定義的行為,所以建議僅將位運算子作用於無符號 型。左移運算子 右移運算子 的行為則依賴於其左側運算物件物件的型別 如果該運...

sizeof運算子詳解

1 sizeof應用在結構上的情況 請看下面的結構 struct mystruct 對結構mystruct採用sizeof會出現什麼結果呢?sizeof mystruct 為多少呢?也許你會這樣求 sizeof mystruct sizeof double sizeof char sizeof in...

sizeof運算子詳解

參考c primer sizeof運算子返回一條表示式或乙個型別名字所佔的位元組數。滿足右結合律,返回型別size t的常量表示式 兩種形式 1.sizeof type 2.sizeof expr 返回表示式結果型別大小 sizeof並不實際計算其運算物件的值 class sales data sa...