c

时间:2017-01-22 07:17:23

标签: c prefix postfix-operator

对于此代码

int j=2;
int c=(j++)*(j++);
printf("%d\n",c);

我得到c的值为6

对于以下代码

int j=2;
int c=(++j)*(++j);
printf("%d\n",c);

我得到c的值为16

有人可以向我解释这个案子吗?

1 个答案:

答案 0 :(得分:1)

您正在同时修改变量的值,并在表达式中使用该变量。因此,您的代码显示未定义的行为。未定义的行为就是这样;什么都可能发生。没有合理的方法可以预测您编写的代码会产生什么值。