MessageBox中未显示增量,更改了变量值

时间:2015-05-17 06:30:21

标签: c# operators increment

我对此代码有两个问题......

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

    int a = 7
    

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

  2. 在最后MessageBox.Show()声明中。我使用a1增加a++。但是,我获得了与之前MessageBox.Show()相同的值。怎么没有增加?

  3. 这是代码:

    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
    }
    

3 个答案:

答案 0 :(得分:5)

  

为什么我得不到3? “+ =”运算符中的“=”是否改变了什么   我最初在代码的开头声明了它?

+=运算符相当于:

a = a + 4

有效地为a分配新值。

  

“a”是否仍然在内存中保存值7,或者这些语句   改变了吗?

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

  

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

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

  

第二种形式是后缀增量操作。结果   操作是操作数增加之前的值。

但是,如果你用它作为前缀:

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

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

  

第一种形式是前缀增量操作。结果   操作是操作数增加后的值。

答案 1 :(得分:3)

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

此发送结果是7 + 4 = 11所以它需要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

在这个后增量条件中所以在这个中它使用该值并且对于下一个循环它增加1 对于Above条件,您可以使用

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

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

并且为此也需要7 和+=意味着

a=a+b;

对于帖子的启动和预先启动条件,请查看此What is the difference between pre increment and post increment operator

答案 2 :(得分:2)

(a + = 4)将a的值递增4并返回递增的值。

a ++将a的值增加1但仍返回原始值。

++ a将a的值递增1并返回递增的值。

尝试添加此行,您会注意到:

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