我有一个简单的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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我猜你真的想要解释为什么它不能按预期工作,而不是实际得到结果,因为你可以通过设置i等于200 来获得结果.
在创建变量的临时副本之后应用postincrement运算符.临时用于语句中的操作,然后执行赋值,因此您的循环等效于:
for (int n = 0; n < 100; n++)
{
j = i;
i++;
i = j;
}
Run Code Online (Sandbox Code Playgroud)
由于这种情况,增量基本上被丢弃并且i实际上从未增加.
i = i++;
Run Code Online (Sandbox Code Playgroud)
这将i设置为i的旧值,然后递增它.我想你想要:
i++;
Run Code Online (Sandbox Code Playgroud)
或者更好的是,如果您的编译器是蹩脚的并且没有优化返回:
++i;
Run Code Online (Sandbox Code Playgroud)
干杯.