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

C与C++中sizeof计算字符字面量'a'结果不同的原因是什么

结果差异的核心原因

两者的差异本质是C和C++标准对字符常量的类型定义不同:

  • C语言中,单引号包裹的普通字符常量类型为int
    所以sizeof('a')实际计算的是int类型的内存占用,在常规32位编译环境下int占4字节,因此输出结果为4。
  • C++语言中,单引号包裹的普通字符常量类型为char
    char类型的固定大小就是1字节,因此sizeof('a')的输出结果为1。

补充说明

  • 如果是宽字符常量L'a',那么在C和C++中的类型都为wchar_t,计算得到的大小是一致的。
  • 如果计算的是char类型变量的大小,比如char c = 'a'; printf("%d", sizeof(c));,那么在两种语言中的输出也都是1,不存在差异。

内容的提问来源于stack exchange,提问作者Fady Hany

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 19:15:04