【问题标题】:-= operator in C#C# 中的 -= 运算符
【发布时间】:2018-06-10 11:45:29
【问题描述】:

帮帮忙,我就是想不通。

int value = 0;
int i = 5;

value -= i;
Console.WriteLine("Test5 = " + value.ToString());

value -= i - 2;
Console.WriteLine("Test5 = " + value.ToString());

我认为输出将是:

Test5 = -5    // value = 0 - 5
Test5 = -2    // value = -5 --5 -2

为什么是正确答案:

Test5 = -5
Test5 = -8

-8 是从哪里来的????

【问题讨论】:

  • 因为 5 - 2 = 3 和 -5 - 3 = -8。 i - 2 首先被评估。
  • 原因是-=是右结合

标签: c# operators


【解决方案1】:

简单的数学。

int value = 0;
int i = 5;

value -= i;
Console.WriteLine("Test5 = " + value.ToString());

在上面的代码之后,我们有以下值:

value = -5

i = 5

接下来,你这样做:

value -= i - 2;
Console.WriteLine("Test5 = " + value.ToString());

可以重写为(注意-= 之后的所有内容的括号):

value = value - (i - 2);

i = 5,所以i - 2 = 3。

-5 - 3 = -8.

显然,括号并不存在。只是-=(或+=*=/=^=等)的右边先求值。

【讨论】:

  • 括号是否适用于所有不同的运算符? (*=.+= 等等...)
  • 就像在数学中一样,括号(实际上是圆括号)可用于操作任何表达式中的运算顺序。
  • 是的,添加括号意味着在将结果应用到括号外之前,将对括号内的内容进行评估。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
  • 2023-03-18
  • 2013-10-29
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
相关资源
最近更新 更多