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

Pri*_*ock 4 c# increment operators

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

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

    int a = 7
    
    Run Code Online (Sandbox Code Playgroud)

    (a += 4)这是现在制作它11的下一行代码.而不是仅仅将其用于可变初始宣布这是.怎么没有得到?是在运营商改变了我最初宣布它在代码的开始?是否仍持有价值在内存中,还是那些语句改变这种状况?(a -= 4)7a73=+=a7

  2. 在最后一个MessageBox.Show()声明.我a通过1使用增量a++.但是,我获得了与之前相同的价值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
}
Run Code Online (Sandbox Code Playgroud)

Yuv*_*kov 5

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

+=操作相当于:

a = a + 4
Run Code Online (Sandbox Code Playgroud)

有效地为其分配新值a.

"a"在内存中仍然保持值7,或者这些语句是否会改变这种情况?

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

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

当你++用作后缀时会发生这种情况.文档说:

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

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

MessageBox.Show((++a).ToString(), "++a");
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这不编译MessageBox.Show(++ a.ToString(),"++ a"); 它应该是MessageBox.Show((++ a).ToString(),"++ a"); :-) (3认同)