操作顺序c#

Order of operations c#

我正在努力理解为什么以下 returns 这个值。任何帮助将不胜感激。

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?

v2-- / 5)= 1.4 这就是你的问题。整数除法 永远不会 return 非整数值。

1/2 等于 0,而不是 0.57/5 等于 1,而不是 1.4

Martin:第 1 步不正确,因为两个变量都是整数,结果将是一个整数,(v2-- / 5) = 1。要获得 1.4 的答案,需要将变量更改为双精度类型. "So you are effectively left with 10 += 5 + 10 * 1 + 3= 28"