[英]Operator sizeof() in C
考慮一下該計划
main()
{
printf("%d %d %d",sizeof('3'),sizeof("3"),sizeof(3));
}
gcc編譯器的輸出是:
4 2 4
為什么會這樣?
假設您在32位系統上運行:
sizeof一個字符文字'3'是4,因為字符文字是C語言中的整數(但不是C ++)。
sizeof“3”是2,因為它是一個長度為2的數組文字(數字3加上NULL終結符)。
sizeof literal 3是4,因為它是一個int。
要記住以下幾點:
sizeof
不是函數,它是一個運算符。 它以sizeof char
為單位返回類型的sizeof char
。 換句話說, sizeof char
總是1。 int
char[2]
,字符3是null終止符。 int
有了這些差異很容易解釋:
int
需要4個char
的空間S來保存它 char[2]
自然只需要2個char
引用K&R,
每個編譯器都可以自由選擇適合自己硬件的大小,只受限於short和int至少為16位,long為至少32位,short不長於int,不超過long 。
sizeof()輸出取決於您使用的編譯器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.