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

为什么C语言中sizeof 1+1的运算结果是5而非sizeof(int)的4?

问题原因:运算符优先级导致表达式解析顺序和预期不符

  • C语言中sizeof运算符的优先级高于加法运算符+,因此你写的sizeof k + k会被编译器解析为(sizeof k) + k,而非你以为的sizeof(k + k)。
  • 你当前环境下sizeof(int)为4,变量k的取值为1,所以(sizeof k) + k的计算结果就是4 + 1 = 5;sizeof 1 + 1的逻辑完全一致,是(sizeof(1)) + 1 = 4 + 1 = 5,和你观测到的结果匹配。

关于int长度的疑问

不存在加法运算过程中int变为5字节的情况。如果你要计算k + k对应类型的大小,手动加括号调整运算顺序即可:

sizeof(k + k);

这个表达式的返回值就是你预期的4,因为k + k的类型仍然是int。额外说明:除了可变长数组场景外,sizeof是编译期运算符,仅判断操作数的类型,不会实际执行括号内的加法运算,也不会读取变量k的运行时值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:09:03