小编典典

为什么 sizeof(x++) 不增加 x?

all

以下是在 dev c++ windows 中编译的代码:

#include <stdio.h>

int main() {
    int x = 5;
    printf("%d and ", sizeof(x++)); // note 1
    printf("%d\n", x); // note 2
    return 0;
}

我希望x在执行 note 1 后为 6 。但是,输出是:

4 and 5

谁能解释为什么在 注释 1*x之后不增加? *


阅读 103

收藏
2022-03-11

共1个答案

小编典典

来自C99 标准(重点是我的)

6.5.3.4/2

sizeof
运算符产生其操作数的大小(以字节为单位),它可以是表达式或带括号的类型名称。大小由操作数的类型决定。结果是一个整数。如果操作数的类型是变长数组类型,则计算操作数;否则,
不计算操作数 ,结果是一个整数常量。

2022-03-11