MessageBox 中未显示增量且变量值已更改
Incrementation not showing in MessageBox and variable values being changed
关于这段代码我有两个问题...
为什么在第 10 行它开始保持当前值。例如,
int a = 7
(a += 4)
即 11
被带到下一行代码 (a -= 4)
现在成为 7
。而不是仅仅使用它作为变量 a
的初始声明,即 7
。为什么我没有得到 3
? +=
运算符中的 =
是否更改了我最初在代码开头声明的内容? a
是否仍将值 7
保存在内存中,或者那些语句是否改变了它?
在最后一个 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
关于这段代码我有两个问题...
为什么在第 10 行它开始保持当前值。例如,
int a = 7
(a += 4)
即11
被带到下一行代码(a -= 4)
现在成为7
。而不是仅仅使用它作为变量a
的初始声明,即7
。为什么我没有得到3
?+=
运算符中的=
是否更改了我最初在代码开头声明的内容?a
是否仍将值7
保存在内存中,或者那些语句是否改变了它?在最后一个
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