请解释sizeof()的输出

时间:2014-10-17 01:51:44

标签: c sizeof

我是c编程的新手,我正在尝试理解sizeof函数。

请帮助我了解此计划的运作方式:

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

我的输出为4 2 4

但是,我无法理解我得到此输出的原因。 请解释一下。

2 个答案:

答案 0 :(得分:8)

  1. sizeof ( '3')字符常量的大小为int,因此您的计算机上的值为4

  2. sizeof ( "3" ),字符串大小为2
    字符串"3"由2个字符('3'+'\0') = "3"组成。我们知道sizeof(char)是1。

  3. sizeof ( 3 ),您的计算机上的int大小为4

答案 1 :(得分:8)

首先,请注意几点:

在您的问题上。

  • comp.lang.c FAQ中,question 8.9解释了C中的字符常量属于int类型,因此sizeof('3')sizeof(int)(您的计算机上似乎是4。)
  • 应用于数组时,sizeof将返回数组的大小 字节。例如,sizeof(int[10])在机器上返回40 sizeof(int)是4.因为sizeof(char)是1,所以它将等于 字符串文字中的字符数。正如Jonathan Leffler所述:

      
        
    1. sizeof(“f”)必须返回2,一个用于'f',一个用于终止'\ 0'。

    2.   
    3. [...]

    4.         

      字符串文字的类型为'大小为N的数组',其中N为N.   包括终端null。

           

      请记住,arrays do not decay 1   传递给sizeof的指针。

    1 Exception to array not decaying into a pointer?

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