【发布时间】:2021-08-31 13:50:04
【问题描述】:
我注意到一些非常奇怪的事情。在下面的代码sn-p中,Console上输出的结果总是0
int result = 0;
for(int i = 1; i < 4; i++)
{
result *= 10 + i;
}
Console.WriteLine(result);
看起来result *= 10 + i; 总是将10 乘以result(其中result 是0)并且没有将i 添加到它。
如果我只改变乘法线...
int result = 0;
for(int i = 1; i < 4; i++)
{
result = result * 10 + i;
}
Console.WriteLine(result);
这会在控制台上输出正确的result - 即123。
我的问题是,为什么 result *= 10 + i; 无法正常工作 - 并且总是将 result 设为 0?
【问题讨论】:
-
为了更清楚,它的
result *= (10+i);。 -
第一个是:
10 + i,然后乘以0,所以它总是0。第二个是(0 * 10) + i,所以它随着每次循环迭代而增加
标签: c# multiplication compound-assignment