操作顺序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
- (v2-- / 5)= 1.4, v2 再设为6.
- v3 / v2 = 3
- 10 * (v2-- / 5) = 14
- 5 + (14) +(3) = 12
因此,(ans += 12) = 22?
v2-- / 5)= 1.4
这就是你的问题。整数除法 永远不会 return 非整数值。
1/2
等于 0
,而不是 0.5
,7/5
等于 1
,而不是 1.4
。
Martin:第 1 步不正确,因为两个变量都是整数,结果将是一个整数,(v2-- / 5) = 1。要获得 1.4 的答案,需要将变量更改为双精度类型.
"So you are effectively left with 10 += 5 + 10 * 1 + 3= 28"
我正在努力理解为什么以下 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
- (v2-- / 5)= 1.4, v2 再设为6.
- v3 / v2 = 3
- 10 * (v2-- / 5) = 14
- 5 + (14) +(3) = 12
因此,(ans += 12) = 22?
v2-- / 5)= 1.4
这就是你的问题。整数除法 永远不会 return 非整数值。
1/2
等于 0
,而不是 0.5
,7/5
等于 1
,而不是 1.4
。
Martin:第 1 步不正确,因为两个变量都是整数,结果将是一个整数,(v2-- / 5) = 1。要获得 1.4 的答案,需要将变量更改为双精度类型. "So you are effectively left with 10 += 5 + 10 * 1 + 3= 28"