c# -++ -- 运算符优先级谜题

标签 c#

很长一段时间我以为我明白了,我打算创建一些谜题来学习我的一些“学生”关于 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/

相关文章:

c# - 利用带有自定义可枚举扩展的 PLINQ

c# - LINQ 通过 2 个属性和创建日期来区分

c# - 将 Dictionary<string, string> 转换为 Dictionary<string, object> 的最简单方法是什么?

c# - C# 中的简单数学问题

c# - 使用 Win32API : unions within structures generate TypeLoadException

c# - 在 C# 中使用具有多个参数的 PrivateObject 来对私有(private)方法进行单元测试

c# - 如何将 local.settings.json 从 azure 函数移植到 .NET 核心 Web 项目?

c# - 具有多个谓词的 linq findall

c# - 进行单元测试时,在此示例中是否可以使用验证来间接测试方法?

c# - MVC Authenticate 依赖什么身份验证?