C#增量运算符(++)问题:为什么输出错误?

我有一个简单的c#控制台应用程序,但我输错了为什么?

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); } } } 

i++是一个返回i的表达式,然后递增它。

因此, i = i++将评估i ,递增i ,然后在i递增之前将i指定给原始值。

您需要使用++i ,它将返回递增的值。

我猜你真的想要解释为什么它不能按预期工作,而不是实际得到结果,因为你可以通过设置i等于200来获得结果。

在创建变量的临时副本之后应用postincrement运算符。 临时用于语句中的操作,然后执行赋值,因此您的循环等效于:

  for (int n = 0; n < 100; n++) { j = i; i++; i = j; } 

既然如此,增量基本上被丢弃, i实际上从未增加。

 i = i++; 

这将i设置为i的旧值,然后递增它。 我想你想要:

 i++; 

或者更好的是,如果您的编译器是蹩脚的并且没有优化返回:

 ++i; 

干杯。

线i = i++; 两次写入变量i。 首先执行后增量,但是赋值语句会覆盖它。

试试i++;

只使用i ++,而不是i = i ++。

我猜你认为你会得到的是我会逐渐增加每个循环,但你编码它的方式是你将i的值赋给它自己并且++操作发生’之后’所以i的值似乎没有增加。 检查++ i和i ++有什么区别?