大家好,下面的代码中,第二个表达式后d的结果应该是什么?
int d = 1;
d += d++;
之后有人会假设 d 是 3,但一元增量 d++ 似乎没有生效,d 保留值 2。
这个错误有名字吗?是否存在其他支持一元递增的编译器(如 C#)?
最佳答案
这不是错误,它的行为完全符合预期。
+= 运算符扩展为:
d = d + d++;
这意味着当将结果赋值回变量时,++ 运算符引起的更改将被覆盖。
关于C# 编译器行为问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1556264/