我的同学问了这个问题,我想确定我告诉他正确的答案。本质上,下面的代码(确实显示“6”作为答案)混淆了他到MessageBox.Show((i - )。ToString());.
我的解释是减量操作(i--)实际上并没有发生,因为它被传递给MessageBox对象的.Show方法。因此它显示6,因为它实际上并没有将该值减少1.
这是正确的解释吗?我从来没有试过在同时显示值的同时抛出inc / dec操作,所以我不确定我的推理是否正确。谢谢!
int i = 6; // I starts as 6...
if (i >=4 ) // Then the check to see if i >= 4 is TRUE...
{
if( i == 5) // The check to see if i == 5 is FALSE...
{
MessageBox.Show(i.ToString());
}
else
{
MessageBox.Show((i--).ToString()); // ****
}
}
else
{
MessageBox.Show((i++).ToString());
}
答案 0 :(得分:8)
i--
返回i的值并返回减量前的值。
你应该按照词汇顺序(按照创作者的意图)逻辑阅读:
puts the value
and then decrements
如果之前为6,即使在i的值为5之后,它也会返回6(即打印)。
请注意--i
递减并返回递减的值。
答案 1 :(得分:4)
i--
返回预减量值。如果您希望递减后的值,则需要--i
答案 2 :(得分:2)
i--
表示使用后减少。
答案 3 :(得分:1)
这(变量 - )是 postfix 减量操作。
操作的结果是操作数“之前”的值 已经减少了。
所以ToString()应用于' i '的当前值(6),然后它的值递减。
另见C#规范。在msdn:Postfix increment and decrement operators