很长一段时间我以为我明白了,我打算创建一些谜题来学习我的一些“学生”关于 c# 中运算符优先级的主题。 但事实证明我还是没弄好。
谜题: 这里的输出是什么?
int a = 0;
int x = --a + a++;
Console.WriteLine(x);
Console.WriteLine(a);
输出:
-2 0
一切都清楚了,这是我预料到的
接下来是问题一:
int b = 0;
int y = b-- + b++;
Console.WriteLine(y);
Console.WriteLine(b);
输出:
-1 0
好吧,在这里我还期望 y 为 -2……现在我正在尝试应用运算符优先级规则和评估顺序,但不确定我是否向自己解释过。 阅读this post今天又来了几次,还是不太明白为什么这里的结果是-1? 有人可以帮助评估第二个结果吗?为什么和第一个不同?
最佳答案
b--
后递减。所以:
b-- returns zero and subtracts 1 from b, leaving -1 in b.
b++ returns the -1 from the last step and adds 1, leaving 0 in b.
加法的最终结果:-1。
关于c# -++ -- 运算符优先级谜题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16310343/