簡體   English   中英

運算符sizeof()在C中

[英]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。

要記住以下幾點:

  1. sizeof不是函數,它是一個運算符。 它以sizeof char為單位返回類型的sizeof char 換句話說, sizeof char總是1。
  2. '3'是一個int
  3. “3”是char[2] ,字符3是null終止符。
  4. 3是int

有了這些差異很容易解釋:

  1. 一個int需要4個char的空間S來保存它
  2. char[2]自然只需要2個char

引用K&R,

每個編譯器都可以自由選擇適合自己硬件的大小,只受限於short和int至少為16位,long為至少32位,short不長於int,不超過long 。

sizeof()輸出取決於您使用的編譯器

暫無
暫無

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

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