namespace Randomedits
{
class Program
{
static void Main(string[] args)
{
int x = 2;
int sml2 = ++x - (x++) ;
Console.WriteLine(sml2);
Console.WriteLine(x);
}
}
}
输出:
0
4
来自Operators:
表达式中的操作数从左到右计算。例如,在
F(i) + G(i++) * H(i)
中,使用F
的旧值调用方法i
,然后使用G
的旧值调用方法i
,最后,使用H
调用方法i
++x - x++
的新值。这与运算符优先级是分开的,并且与之无关。
将其应用于表达式++x
,我们可以看到首先计算x++
,然后计算++ x - x ++
,然后计算减法。
关于运算符优先级的一种好方法是,优先级较高的运算符更紧密地绑定比优先级较低的运算符。
例如,在表达式++x
中,运算符-
的绑定比x++
更加紧密,而-
运算符的绑定比(++x) - (x++)
更加紧密,因此将其解析为[C0 ]。如果-
运算符的优先级高于++x
或x++
运算符,则此表达式将被解析为++(x - x)++
(这没有多大意义)。
++x
的优先级高于x++
的事实在这里无关紧要。对表达式++x++
而言很重要,该表达式被解析为(++x)++
(并且由于不能将运算符x++
应用于表达式(++ x)`,因此会引起编译器错误)。 >