使用复合乘法语句时得到错误的结果-C#

c#

我注意到一些非常奇怪的事情。在下面的代码片段中,控制台输出的结果总是0

int result = 0;
for(int i = 1; i < 4; i++)
{
  result *= 10 + i;
}
Console.WriteLine(result);

它看起来result *= 10 + i;总是10result(where resultis 0)相乘而不是相加i

如果我只改变乘法线...

int result = 0;
for(int i = 1; i < 4; i++)
{
  result = result * 10 + i;
}
Console.WriteLine(result);

这会result在控制台上输出正确的 - 即123.

我的问题是,为什么result *= 10 + i;不能正常工作 - 并且总是给出resultas 0

回答

这是因为操作顺序。

result = result * 10 + i

相当于……

result = (result * 10) + i

...但...

result *= 10 + i

是相同的...

result = result * (10 + i)


以上是使用复合乘法语句时得到错误的结果-C#的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>