我对下面代码的结果感到困惑。为什么“b”在执行这些操作时保留看似不正确的值?
int a = 0;
int b = 5;
a = b++;
b = b++;
Console.WriteLine("For b = b++; b=" + b.ToString()); // b should be 7 but it's 6
a = 0;
b = 5;
a = b--;
b = b--;
Console.WriteLine("For b = b--; b=" + b.ToString()); // b should be 3 but it's 4
a = 0;
b = 5;
a = b + 1;
b = b + 1;
Console.WriteLine("For b = b++; b=" + b.ToString());
输出
b=6
b=4
b=6
谁能解释一下 C# 中的这种行为及其工作原理吗?
最佳答案
这确实是后缀运算符的行为,详细信息 here .
例如,当你写:
b = b++;
发生以下情况:
- 保存
b
的当前值, b
递增,b
的保存值由后缀++
运算符生成,- 运算符产生的值分配给
b
。
因此,b
确实会被赋予其原始值,而增加的值会丢失。
关于c#-4.0 - 为什么这个整数不增加两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19634718/