【发布时间】:2016-02-20 10:05:52
【问题描述】:
我了解i++ and ++i 之间的区别,但我不太确定为什么会得到以下结果:
static void Main(string[] args)
{
int c = 42;
c = c++;
Console.WriteLine(c); //Output: 42
}
在上面的代码中,因为这是将变量分配给自身,然后增加值,我希望结果是43。但是,它返回42。我在使用c = c--; 时也得到了相同的结果。
我意识到我可以简单地使用 c++; 并完成它,但我更好奇它为什么会这样。谁能解释这里发生了什么?
【问题讨论】:
-
首先声明“c”,它等于42。然后在“c++”上修改它的值,因此,它将首先执行赋值(“c = c”),然后增加值右边的“c”,但问题是这是一个值类型,而不是引用类型,所以增加的值与最终“c”中包含的值不同。
-
我花了一点时间才意识到我们正在使用一种表达定义行为的语言。任何使用 C 或 C++ 工作的人,不要试图将这个问题的答案应用于这些语言!
-
实际上,即使它是定义的行为,也不要在任何语言中使用该结构。因为它在所有语言中都令人困惑。
-
"我意识到我可以简单地使用 c++" 但是......但它在 c++ 中是未定义的行为!
标签: c# post-increment pre-increment