Vik*_*ngh 1 c# multiplication compound-assignment
我注意到一些非常奇怪的事情。在下面的代码片段中,控制台输出的结果总是0
int result = 0;
for(int i = 1; i < 4; i++)
{
result *= 10 + i;
}
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)
它看起来result *= 10 + i;总是10与result(where resultis 0)相乘而不是相加i。
如果我只改变乘法线...
int result = 0;
for(int i = 1; i < 4; i++)
{
result = result * 10 + i;
}
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)
这会result在控制台上输出正确的 - 即123.
我的问题是,为什么result *= 10 + i;不能正常工作 - 并且总是给出resultas 0?
这是因为操作顺序。
result = result * 10 + i
Run Code Online (Sandbox Code Playgroud)
相当于……
result = (result * 10) + i
Run Code Online (Sandbox Code Playgroud)
...但...
result *= 10 + i
Run Code Online (Sandbox Code Playgroud)
是相同的...
result = result * (10 + i)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36 次 |
| 最近记录: |