簡體   English   中英

請解釋sizeof()的輸出

[英]Please explain the output of sizeof()

我是c編程的新手,我正在嘗試理解sizeof函數。

請幫我理解這個程序是如何工作的:

#include<stdio.h>
main( )
{
    printf ( "\n%d %d %d", sizeof ( '3'), sizeof ( "3" ), sizeof ( 3 ) ) ;
}

我輸出為4 2 4

但是,我無法理解我得到此輸出的原因。 請解釋一下。

  1. sizeof ( '3') ,它是字符常量的大小,它是int因此您在機器上獲得的值為4

  2. sizeof ( "3" ) ,它是字符串的大小,即2
    字符串"3"由2個字符組成('3'+'\\0') = "3" 我們知道sizeof(char)是1。

  3. sizeof ( 3 ) ,它的大小為int ,在你的機器上為4

首先,幾個筆記:

在你的問題上。

  • comp.lang.c FAQ中問題8.9解釋了C中的字符常量是int類型,因此sizeof('3')sizeof(int) (在您的機器上看起來是4)。
  • 應用於數組時, sizeof以字節為單位返回數組的大小。 例如, sizeof(int[10])sizeof(int)為4的機器上返回40.因為sizeof(char)是1,它將等於字符串文字中的字符數。 正如Jonathan Leffler所解釋的那樣:

    1. sizeof(“f”)必須返回2,一個用於'f',一個用於終止'\\ 0'。

    2. [...]

    字符串文字的類型為'char的大小為N的數組',其中N包含終止null。

    請記住, 陣列不衰減通過為sizeof 1時的指針。

    1 數組沒有衰減成指針的異常?

  • 最后, sizeof(3)sizeof(int)

暫無
暫無

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

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