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

时间:2010-11-26 18:48:24

标签: 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);
    }

}
}

6 个答案:

答案 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++?