从我的接受中显示不同的输出

时间:2012-12-05 15:46:42

标签: c# console-application

Hay我甚至不知道如果这个问题之前有过问题,但我的问题如下 在我的c#控制台应用程序中,我声明了一个变量 i ,并将值指定为 int i = 0 现在我希望增加2乘2,显然我可以使用以下cede。

int i = o;
i += 2;
Console.WriteLine(i); 
Console.ReadLine(); 
//OUTPUT WILL BE 2

但这是我的备用解决方案。由于我的懒惰行为,我拒绝使用此代码,我使用了以下代码。

int i = 0;
i += i++;
Console.WriteLine(i);
Console.ReadLine();

在上面的代码中,我接受了 FIRST i ++将增加1,然后再增加 i + = i ,但这件事情不会发生。
我不知道为什么这件事发生可能是我做错了什么或者有些编译问题。????? 任何人都可以建议我为什么会发生这种情况???? 我只是想知道为什么代码2没有用?那里发生了什么?

3 个答案:

答案 0 :(得分:2)

i ++返回i(0)的值,然后加1.I ++称为后增量

你所追求的是++ i,它将首先增加1,然后返回增加的数字。

(有关增量运算符的详细信息,请参阅http://msdn.microsoft.com/en-us/library/aa691363(v=vs.71).aspx

答案 1 :(得分:0)

i需要从1开始才能完成这项工作。

int i = 1;

EDIT ::

int i = 0;
i += i++;

上面的代码表达了以下内容:

i + 0然后添加一个

如果您使用i += ++i;,则会在事先处理增量时获得i + 1

答案 2 :(得分:0)

您的代码正在做什么:

  • “i ++”被评估。 “i ++”的值是value of i before the increment发生的。
  • 作为评估“i ++”的一部分,i is incremented by one。现在我的值为1;
  • 执行分配。我被赋予“i ++”的值,这是i before增量的值 - 即0。

即,“i = i ++”大致转换为

int oldValue = i; 
i = i + 1 
//is the same thing as 
i = oldValue; 

执行i ++后post-increment运算符递增整数“i”的值

供您参考:

 i++ will increment the value of i, but return the pre-incremented value.
 ++i will increment the value of i, and then return the incremented value.

因此,执行2步增量的最佳方法是:

i +=2