我有一个简单的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);
}
}
}
答案 0 :(得分:7)
i++
是一个表达式,它返回i
,然后递增它。
因此,i = i++
将评估i
,增加i
,然后将i
分配给原始值,然后再增加。< / p>
您需要使用++i
,这将返回递增的值。
答案 1 :(得分:7)
我猜你真的想要解释为什么它不能按预期工作,而不是实际得到结果,因为你可以通过首先将i
设置为200来获得结果
在创建变量的临时副本后应用postincrement运算符。临时用于语句中的操作,然后执行赋值,因此您的循环等效于:
for (int n = 0; n < 100; n++)
{
j = i;
i++;
i = j;
}
由于是这种情况,基本上会丢弃增量,i
实际上从未增加。
答案 2 :(得分:5)
i = i++;
这将i设置为i的旧值,然后递增它。我想你想要:
i++;
或者更好的是,如果你的编译器是蹩脚的并且没有优化返回:
++i;
干杯。
答案 3 :(得分:4)
行i = i++;
向变量i写入两次。首先执行post增量,但是赋值语句会覆盖它。
只试用i++;
答案 4 :(得分:3)
只使用i ++,而不是i = i ++。
答案 5 :(得分:1)
我猜你认为你会得到的是我会在每个循环中递增,但你编码它的方式是你将i的值赋给它自己并且++操作在'之后'发生所以i的值似乎没有增加。 检查What is the difference between ++i and i++?