以下是在 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 。但是,输出是:
x
4 and 5
谁能解释为什么在 注释 1*x之后不增加? *
来自C99 标准(重点是我的)
6.5.3.4/2 sizeof 运算符产生其操作数的大小(以字节为单位),它可以是表达式或带括号的类型名称。大小由操作数的类型决定。结果是一个整数。如果操作数的类型是变长数组类型,则计算操作数;否则, 不计算操作数 ,结果是一个整数常量。
6.5.3.4/2
sizeof 运算符产生其操作数的大小(以字节为单位),它可以是表达式或带括号的类型名称。大小由操作数的类型决定。结果是一个整数。如果操作数的类型是变长数组类型,则计算操作数;否则, 不计算操作数 ,结果是一个整数常量。