You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

64位C编译器中sizeof行为不一致问题咨询

为什么sizeof('3')的结果是4?

先看你的代码:

printf("Size of char = %d\n", sizeof(char));
printf("\n%d %d %d", sizeof('3'), sizeof("3"), sizeof(3));

输出结果:

Size of char = 1

4 2 4

核心原因很明确:在C语言里,单引号包裹的字符常量(比如'3'),它的类型是int,不是char。

  • sizeof(char)固定为1,这是C标准强制规定的,所以第一个输出完全符合预期。
  • '3'作为字符常量,在C语言中会被当作int类型处理。64位编译器下int的大小通常是4字节,因此sizeof('3')返回4。
  • "3"是字符串字面量,本质是包含字符'3'和末尾空终止符\0的char数组,总长度为2,所以大小是2字节。
  • 3是普通整数常量,类型为int,大小自然也是4字节。

如果换成C语言,字符常量的类型就是char,这时候sizeof('3')会返回1——这是C和C之间一个容易混淆的细节差异。

内容的提问来源于stack exchange,提问作者Obaid Majeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 14:22:03