为什么 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)
我正在为 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)