0

干草我什至不知道这个问题是否曾经问过,但我的问题如下。
在我的 c# 控制台应用程序中,我声明了一个变量i,并将其赋值为 int i = 0,现在我想将 i 增加 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++ 将增加一,然后它将再次增加i+=i但这件事不会发生。!!!
我不知道为什么会发生这种情况,可能是我做错了什么或一些编译问题。??????谁能告诉我为什么会这样???? 我只想知道为什么代码 2 不起作用?那里发生了什么?

4

3 回答 3

2

i++ 返回 i (0) 的值,然后加 1。 i++ 称为post-increment

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

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

于 2012-12-05T15:52:07.000 回答
0

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

int i = 1;

编辑::

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

您上面的代码表示以下内容:

i + 0然后加一个

如果你使用i += ++i;,那么你会得到i + 1它预先处理了增量。

于 2012-12-05T15:50:46.150 回答
0

你的代码在做什么:

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

也就是说,“i = i++”大致翻译为

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

post-increment运算符在执行 i++ 后递增整数“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 
于 2012-12-05T15:56:14.537 回答