-1

我几乎是编程新手。

我在许多试卷和考试中看到很多此类问题

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

我总是预测变量“i”的错误值。我的朋友们提出了许多方法
,但都在某些或其他这样的表达中失败了。

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

4

1 回答 1

1

ANSI C 明确拒绝对 n 元运算的参数求值顺序做出任何保证。因此有

y = j++ + ++j

..您最终可能会得到以下之一的逻辑等价物:

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

..或者

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

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

于 2013-10-23T04:26:48.087 回答