运算符sizeof()在C中

Moh*_*hit 5 c types sizeof

考虑一下该计划

main()  
{  
 printf("%d %d %d",sizeof('3'),sizeof("3"),sizeof(3));  
}
Run Code Online (Sandbox Code Playgroud)

gcc编译器的输出是:

4 2 4
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

Ama*_*9MF 13

假设您在32位系统上运行:

sizeof一个字符文字'3'是4,因为字符文字是C语言中的整数(但不是C++).

sizeof"3"是2,因为它是一个长度为2的数组文字(数字3加上NULL终结符).

sizeof literal 3是4,因为它是一个int.

  • 这个问题的答案有助于解释更多 - http://stackoverflow.com/questions/2252033/in-c-why-is-sizeofchar-1-when-a-is-an-int (2认同)

fre*_*ace 12

要记住以下几点:

  1. sizeof它不是一个功能,它是一个操作员.它以单位为单位返回类型的大小sizeof char.换句话说sizeof char总是1.
  2. '3'是一个 int
  3. "3"是a char[2],字符3则是null终止符.
  4. 3是一个 int

有了这些差异很容易解释:

  1. 一个int需要4 char秒的空间来容纳它
  2. char[2]自然只需要2 char