【问题标题】:Incrementation not showing in MessageBox and variable values being changed增量未显示在 MessageBox 中并且变量值正在更改
【发布时间】:2015-07-28 19:49:31
【问题描述】:

我对这段代码有两个问题...

  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
}

【问题讨论】:

标签: c# operators increment


【解决方案1】:

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

+= 运算符等价于:

a = a + 4

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

“a”是否仍然在内存中保存值 7,或者那些语句 改一下?

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

在最后一个 MessageBox.Show() 语句。我使用将“a”增加 1 “一个++”。但是,我得到与前一个相同的值 消息框.Show()。怎么没增加??

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

第二种形式是后缀递增操作。结果 operation 是操作数在递增之前的值。

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

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

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

第一种形式是前缀递增操作。结果 operation 是操作数自增后的值。

【讨论】:

  • 感谢您的解释!
  • 这不会编译 MessageBox.Show(++a.ToString(), "++a");它应该是 MessageBox.Show((++a).ToString(), "++a"); :-)
  • @PaoloCosta 谢谢,已修复。
【解决方案2】:
 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

在此它是后增量条件,因此在此它使用该值并且对于下一个循环它增加 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;

对于后增量和前增量条件,请通过此What is the difference between pre increment and post increment operator

【讨论】:

  • 感谢您的解释和链接!
【解决方案3】:

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

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

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

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

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

【讨论】:

  • 也感谢您的解释!
猜你喜欢
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-03
  • 1970-01-01
相关资源
最近更新 更多