C# 编译器行为问题?

标签 c# compiler-construction increment unary-operator

大家好,下面的代码中,第二个表达式后d的结果应该是什么?

        int d = 1;
        d += d++;

之后有人会假设 d 是 3,但一元增量 d++ 似乎没有生效,d 保留值 2。

这个错误有名字吗?是否存在其他支持一元递增的编译器(如 C#)?

最佳答案

这不是错误,它的行为完全符合预期。

+= 运算符扩展为:

d = d + d++;

这意味着当将结果赋值回变量时,++ 运算符引起的更改将被覆盖。

关于C# 编译器行为问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1556264/

相关文章:

c# - C 夏普日期时间格式

c# - 在 C# 中限制访问枚举参数的最佳实践

c# - 在 C# 中,执行 "static"复制到 StringBuilder 对象的子字符串

c++ - 将终端的输入/输出重定向到 iOS JB 中的 gui

javascript - AngularJS 中的增量距离

c# - C#从资源转换音频

c - Visual Studio 6使用的c编译器是什么?

compiler-construction - opa:无法编译 hello chat 演示(另一个错误)

java - 在 For 循环增量中使用 if else

python - 如何使用正则表达式中的变量在 python 中增加整个单词匹配