使用复合乘法语句时得到错误的结果 - C#
Getting wrong result when using Compound multiplication statement - C#
我注意到一些非常奇怪的事情。在下面的代码片段中,控制台输出的结果总是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 = result * 10 + i
相当于...
result = (result * 10) + i
...但是...
result *= 10 + i
与...相同
result = result * (10 + i)
我注意到一些非常奇怪的事情。在下面的代码片段中,控制台输出的结果总是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 = result * 10 + i
相当于...
result = (result * 10) + i
...但是...
result *= 10 + i
与...相同
result = result * (10 + i)