[英]What is the difference between char * x,y,z;char* x,y,z;char (*)x,y,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
是具有char
和int
類型的算術操作數的加法(數字文字100
被視為C中的整數)。
語言規則規定,這種算術加法的結果也應為int
類型,並且sizeof(int) == 4
(至少在當前的編譯器下)。
sizeof表達式的計算結果為無符號的
size_t
值,該值等於“參數”數據類型,變量或表達式的字節大小(對於數據類型,sizeof的計算結果為數據類型的大小;對於變量和表達式,其計算結果為value的大小。變量或表達式的類型)。
由於您具有帶char
和int
的表達式,因此編譯器通過整數提升將char
轉換為int
,因此sizeof
運算符將為您提供int
類型的大小,在您的情況下為4個字節。
似乎正在將其轉換為int
,這將說明大小為4而不是1。
我猜
sizeof(z + 100);
導致隱式轉換為int,其大小為4個字節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.