-1

可能重复:
谁能解释这些未定义的行为(i = i++ + ++i,i = i++ 等……)

堆栈溢出有一个非常好的问题。

对于 i = 0,为什么 (i += i++) 等于 0?

但是当我在 C 中尝试相同的代码时,它给出了不同的结果:

int i = 0;          
i += i++;          // 1 in C and 0 in C#
printf("%d", i);

但以下内容:

i = i++ + i;       // 1 in C and 1 in C#
i += i++ + i;      // 1 in C

在 C# 中,它评估++and=+运算符,首先通过tempVar为每个 fo 分配它们并对tempVars. C如何实现它?还是建筑不同?

4

1 回答 1

0

C 标准没有指定评估顺序。它留给编译器实现。

于 2012-11-28T02:30:15.137 回答