C# 显示与我的接受不同的输出

C# 显示与我的接受不同的输出,c#,console-application,C#,Console Application,我不知道这个问题以前有没有问过,但我的问题如下。 在我的c#console应用程序中,我声明了一个变量I,并将值赋值为 inti=0现在我想要增量i乘以2,显然我可以使用下面的cede int i = o; i += 2; Console.WriteLine(i); Console.ReadLine(); //OUTPUT WILL BE 2 但这是我的另一个解决方案。由于我的懒惰行为,我拒绝使用此代码,我使用了以下代码 int i = 0; i += i++; Console.Write

我不知道这个问题以前有没有问过,但我的问题如下。
在我的c#console应用程序中,我声明了一个变量I,并将值赋值为 inti=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();
在上面的代码中,我已经接受了第一次I++将增加1,之后它将再次增加I+=I,但这件事不会发生
我不知道为什么会发生这种事情,可能是我做错了什么,或者是编译问题。????? 有人能告诉我为什么会发生这种事吗????
我只是想知道为什么代码2不起作用?那里发生了什么事?

i
需要从1开始,这样才能起作用

int i = 1;
编辑::

int i = 0;
i += i++;
上面的代码表示以下内容:

i+0
然后添加一个


如果使用
i++=+i
然后,当它预先处理增量时,您将得到
i+1

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

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


(有关增量运算符的详细信息,请参见)

您的代码正在执行的操作:

  • 对“i++”进行评估。“i++”的值是增量发生之前i的
  • 作为“i++”评估的一部分,
    i增加1
    。现在我的值是1
  • 任务已执行。i被分配了“i++”的值,即增量之前i
    的值,即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.
因此,进行两步增量的最佳方法如下:

i +=2 

这里已经回答了几次,基本上i++在赋值后增加i。如果需要,可以使用++i在之前递增:
ì+=+++i,您的问题得到了更详细的回答。您也可以尝试i=i+2;是的,我知道这一点,但抛出了我的逻辑,它应该增加2,我的问题是,在我的代码2中发生了什么或什么是错误的?为什么它不给我ans=2?是的,我知道这一点,但我的逻辑是,它应该增加2,我的问题是,在我的代码2中发生了什么或什么是错误的?为什么它不给我ans=2?输出将是
1
而不是
2
好的,我知道,但是你能告诉我代码2中发生了什么吗?