请解释sizeof()的输出

bes*_*hes 3 c sizeof

我是c编程的新手,我正在努力理解这个sizeof功能.

请帮我理解这个程序是如何工作的:

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

我得到输出为4 2 4.

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

use*_*087 9

  1. sizeof ( '3'),它的大小,字符常量这是int使你得到的值作为4你的机器上.

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

  3. sizeof ( 3 ),它的大小int4你的机器上.


小智 9

首先,几个笔记:

在你的问题上.

  • comp.lang.c常见问题,质疑8.9解释,在C字符常量是类型的int,所以sizeof('3')sizeof(int)(这似乎是4你的机器上.)
  • 应用于数组时,sizeof返回数组的大小(以字节为单位).例如,sizeof(int[10])在4的机器上返回40. sizeof(int)因为sizeof(char)它是1,它将等于字符串文字中的字符数.正如Jonathan Leffler所解释的那样:

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

    2. [...]

    字符串文字的类型为'char的大小为N的数组',其中N包含终止null.

    请记住,数组不衰减1 通过为sizeof时的指针.

    1 数组没有衰减成指针的异常?

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