C# Increment operator (++) question:Why am i getting wrong output?
我有一个简单的C控制台应用程序,但是我得到了错误的输出为什么?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication11 { class Program { static void Main(string[] args) { int i = 100; for (int n = 0; n < 100; n++) { i = i++; } Console.WriteLine(i); } } } |
我猜你真的想要一个解释为什么它不能按预期工作,而不是实际得到结果,因为你可以通过设置
在创建变量的临时副本之后,将应用PostIncrement运算符。临时语句用于语句中的操作,然后执行赋值,因此循环等效于:
1 2 3 4 5 6 | for (int n = 0; n < 100; n++) { j = i; i++; i = j; } |
既然是这样,增量基本上是被丢弃的,而
因此,
您需要使用
1 | i = i++; |
这会将i设置为i的旧值,然后将其递增。我想你想要:
1 | i++; |
或者更好的是,如果您的编译器是跛脚的,并且没有优化返回:
1 | ++i; |
干杯。
行
试一试
只需使用i++,而不是i=i++。
我猜你认为你会得到的是,我将在每个循环中递增,但是你对它进行编码的方式是,你将i的值赋给它自己,然后,++操作会"事后"发生,所以i的值似乎不会递增。检查++i和i++之间的区别是什么?