C#中使用复合乘法赋值语句得到错误结果的原因求解
原因分析
- 首先要明确复合赋值运算符的运算规则:
*=的优先级低于加法运算符+,因此result *= 10 + i等价于result = result * (10 + i),而非你预期的result = result * 10 + i,两种写法的运算顺序完全不同。 - 其次你的
result初始值设置为0,0乘以任意数值的结果都是0,因此整个循环过程中result的取值始终为0,最终输出结果自然就是0。
你修改后的写法是显式按照你期望的逻辑执行运算:每次循环先将result乘以10(十进制下相当于左移一位),再加上当前循环的i值,三次循环分别得到1、12、123,最终输出正确结果。
内容的提问来源于stack exchange,提问作者Vikram Singh
相关产品推荐
相关产品推荐

