为什么 sizeof 1+1 是 5?

Why sizeof 1+1 is 5?

我正在为 Ubuntu 使用 gcc 10.3.0 版。 我正在学习 sizeof expression 在 C 中的含义。 我试过了:

int k = 1;
sizeof k+k;

其中returns5,同理sizeof 1+1,区别sizeof(int)(4).

这个 sizeof 运算的计算结果不应该是 sizeof(int),它的计算结果是 4 吗?这是否意味着在加法期间,int 增长为 5 字节长的数据结构?

它基本上是 sizeof(k) + k -> 4 + 1 = 5。另见 what-does-sizeof-without-do

就像在代数表达式中 multiplication/division 比 addition/subtraction 具有更高的优先级(计算优先级)一样,C/C++ 也具有运算符优先级。

sizeof 只是另一个运算符。它的运算符优先级比 addition/subtraction 运算符高 2 级。

所以它计算 sizeof k + k(sizeof k) + k 相同,而不是 sizeof(k+k)