c中前缀和后缀运算符的操作

operation of prefix and postfix operators in c

对于此代码

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

有人可以向我解释一下这个案例吗?

您同时修改了一个变量的值,并在表达式中使用了该变量。因此,您的代码表现出 未定义的行为 。未定义的行为就是这样;任何事情都可能发生。没有逻辑方法可以预测您编写的代码会产生什么值。