许多后期或前期增量后的变量值

时间:2013-10-23 04:24:04

标签: c post-increment

我几乎是编程新手。

我在很多问题论文和考试中都看到了很多这类问题

int j= 5;
int i=0;
i= j++ + ++j + j++ - ++j ;

我总是预测变量'i'的错误值。我的朋友提出了很多方法 但是在一些或其他这样的表达中都失败了。

是否有一些通用规则/方法来评估此类表达方式?

1 个答案:

答案 0 :(得分:1)

ANSI C明确拒绝对n-ary操作的参数评估顺序做出任何保证。因此有

y = j++ + ++j

..您最终可能会得到以下其中一项的逻辑等效项:

x1 = j++; x2 = ++j; y = x1 + x2

..或

x1 = ++j; x2 = j++; y = x1 + x2

取决于编译器,编译器版本,操作系统甚至编译标志。更复杂的表达会使事情变得更加混乱。