MessageBox 中未显示增量且变量值已更改

Incrementation not showing in MessageBox and variable values being changed

关于这段代码我有两个问题...

  1. 为什么在第 10 行它开始保持当前值。例如,

    int a = 7
    

    (a += 4)11 被带到下一行代码 (a -= 4) 现在成为 7。而不是仅仅使用它作为变量 a 的初始声明,即 7。为什么我没有得到 3+= 运算符中的 = 是否更改了我最初在代码开头声明的内容? a 是否仍将值 7 保存在内存中,或者那些语句是否改变了它?

  2. 在最后一个 MessageBox.Show() 语句。我使用 a++a 增加 1。但是,我得到了与之前 MessageBox.Show() 相同的值。怎么没有递增??

这是代码:

private void button1_Click(object sender, EventArgs e)
{
    int a = 7;
    int b = 3;

    MessageBox.Show((a + b).ToString(), "a+b");
    MessageBox.Show((a - b).ToString(), "a-b");
    MessageBox.Show((a * b).ToString(), "a*b");
    MessageBox.Show((a / b).ToString(), "a/b");
    MessageBox.Show((a += 4).ToString(), "a+=4"); //adds 4 to a
    MessageBox.Show((a -= 4).ToString(), "a-=4"); //substracts 4 from a
    MessageBox.Show((a *= 4).ToString(), "a*=4"); //multiplies 4 from a
    MessageBox.Show(a++.ToString(), "a++"); //adds 1 to a
}

(a += 4) 将 a 的值增加 4,returns 增加值。

a++ 将 a 的值增加 1,但仍 returns 原始值。

++a 将 a 的值递增 1,returns 递增的值。

尝试添加这一行,您会注意到它:

MessageBox.Show((++a).ToString(), "a++"); 

How come I don't get 3 ? Is the "=" in the "+=" operator changing what I initially declared it in the beginning of the code ?

+= 运算符等同于:

a = a + 4

正在有效地为 a 分配一个新值。

Does "a" still hold the value 7 in memory, or does those statements change that?

没有。在您第一次分配后,它会发生变化。

At the last MessageBox.Show() statement. I increment "a" by 1 using "a++". However, I get the same value I had for the previous MessageBox.Show(). How come it didn't increment ??

当您使用 ++ 作为后缀时会发生这种情况。 The docs say:

The second form is a postfix increment operation. The result of the operation is the value of the operand before it has been incremented.

但是,如果您将它用作前缀:

MessageBox.Show((++a).ToString(), "++a");

您将再次看到更新后的值,正如文档所说:

The first form is a prefix increment operation. The result of the operation is the value of the operand after it has been incremented.

 MessageBox.Show((a += 4).ToString(), "a+=4"); //adds 4 to a

这个句子的结果是7+4=11所以在a中取11的值 之后

MessageBox.Show((a -= 4).ToString(), "a-=4"); //substracts 4 from a

对于这句话,它取一个值,即当前值 11 即 11-4=7 所以现在的值是 7;

MessageBox.Show(a++.ToString(), "a++"); //adds 1 to a

在这个 post-increment 条件所以在这个它使用那个值并且对于下一个循环它递增 1 对于以上条件,您可以使用

MessageBox.Show((++a).ToString(), "a++"); //adds 1 to a

MessageBox.Show((a *= 4).ToString(), "a*=4"); //multiplies 4 from a

为此也需要 7 += 意思是

a=a+b;

对于post的增量和预增量条件通过这个What is the difference between pre increment and post increment operator