簡體   English   中英

sizeof(z + 100),用於char類型的z

[英]sizeof(z+100),for z of char type

我測試以下代碼:

char ch,z=120;
int x=5;
double y=7.5;
printf("\nsize of (z+100): %d" , sizeof(z+100));

我得到的輸出是:

size of (z+100): 4

有人可以解釋這個結果嗎? 我認為輸出必須是

size of (z+100): 1

因為char的范圍是0 ... 255,並且100 = 120在范圍內...謝謝

表達式z + 100是具有charint類型的算術操作數的加法(數字文字100被視為C中的整數)。

語言規則規定,這種算術加法的結果也應為int類型,並且sizeof(int) == 4 (至少在當前的編譯器下)。

sizeof表達式的計算結果為無符號的size_t值,該值等於“參數”數據類型,變量或表達式的字節大小(對於數據類型,sizeof的計算結果為數據類型的大小;對於變量和表達式,其計算結果為value的大小。變量或表達式的類型)。

由於您具有帶charint的表達式,因此編譯器通過整數提升將char轉換為int ,因此sizeof運算符將為您提供int類型的大小,在您的情況下為4個字節。

似乎正在將其轉換為int ,這將說明大小為4而不是1。

我猜

sizeof(z + 100);

導致隱式轉換為int,其大小為4個字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM