操作顺序C#

时间:2018-11-10 08:36:06

标签: c# operator-precedence

我正在努力理解以下内容为何返回此值的原因。任何帮助将不胜感激。

int ans = 10, v1 = 5, v2 = 7, v3 = 18;
ans += v1 + 10 * (v2-- / 5) + v3 / v2;
Console.WriteLine(ans);// prints 28

我的想法是,首先括号,除法,乘法,然后加法。因此,步骤将是: v1 + 10 *(v2-- / 5)+ v3 / v2

  1. (v2-- / 5)= 1.4,然后将v2设置为6。
  2. v3 / v2 = 3
  3. 10 *(v2-- / 5)= 14
  4. 5 +(14)+(3)= 12

因此,(ans + = 12)= 22?

2 个答案:

答案 0 :(得分:1)

v2-- / 5)= 1.4,这是您的问题。整数除法将从不返回非整数值。

1/2等于0,不等于0.5,而7/5等于1,不等于1.4

答案 1 :(得分:0)

马丁:步骤1是错误的,因为两个变量都是整数,结果将是一个整数(v2-- / 5)=1。要得到1.4的答案,需要将变量更改为double类型。 “所以实际上您只剩下10 + = 5 + 10 * 1 + 3 = 28”