【发布时间】:2010-12-06 02:09:14
【问题描述】:
大家好,在下面的代码中,第二个表达式后面的d的结果应该是什么?
int d = 1;
d += d++;
之后会假设 d 为 3,但一元增量 d++ 似乎没有生效,并且 d 保留了 2 的值。
这个错误有名字吗?其他支持一元增量的编译器(如 C#)是否存在?
【问题讨论】:
-
问为什么,或者即使编译器是错误的,这通常是一个错误的问题。询问您的特殊情况发生的原因可能是正确的问题。今天的 C# 编译器只经过了少量的严格测试,通常值得怀疑。
-
不确定这是否是一个错误,我原以为答案也是 3,但如果在后缀 ++ 处评估,d 的值是 1,所以答案是 2,或者是运算符在 ?
-
@Kenny Nah,只是一个“?”无法弥补达科他州的大卫认为这至少有 50% 的可能性可能是计算机错误而不是他缺乏理解这一事实。
-
d = (2*d)+1 即使错误不存在也不会令人困惑。
-
编写此类代码的任何开发人员都存在错误。
标签: c# compiler-construction increment unary-operator