后缀自赋值行为在 C#/Java 中是否严格定义
Is postfix self assignment behaviour strictly defined in C#/Java?
我知道以下代码已知会在 C/C++ 中产生未定义的行为
int i = 1;
i = 2*i++;
cout << i << endl; // surprisingly 3, undefined...
它在 Java/C# 中生成预期结果 2。但这在 Java/C# 中是保证还是仍然未定义的行为?
在 C# 中,这是非常明确的定义。
- 它递增变量。
- 它将旧值分配给变量
因此,变量的值保持不变。结果将是 2 与您的案例在这里。
i = i++
这与
t = i
i = i + 1
i = t
当这种表达作为复合语句的一部分时,它会变得非常混乱。从长远来看,保持表达简单,减少自己和他人的困惑是非常明智的。
表达式在 Java 和 C# 中从左到右计算
相关文章:
- 在这种情况下,java对象是否可以调用本机函数
- 是否有技术原因阻止 Java 中的 final C++ 像 const 一样严格?
- Java 中是否有类似于 C++ 中引用类型"&"的内容?
- Java 是否像C++模板一样具有泛型推论?
- 在C++中是否有类似Java的AtomicStampedReference?
- 是否可以在SO库中公开C API以访问Android JAVA方法
- 是否可以使用InProceChannel使用Java客户端在同一过程中调用C 服务器
- C 是否具有接口类概念,如果它在那里,那么它与Java接口类别有何不同
- 在Java中,是否可以编写单个函数或类来处理任意多维ArrayList?
- 后缀自赋值行为在 C#/Java 中是否严格定义
- 是否可以在C++中推迟 const 变量的初始化,例如 Java 的"blank final"功能?
- 在 C++ 中是否有等效于 Java 的'classname.this'?
- 在技术上是否可以创建 Java 虚拟机的映像文件并使用它来更快地启动 Java 应用程序
- NDK:GetByteArrayElements是否将数据从Java复制到C++
- 是否可以在DOS 6.22中运行java应用程序
- Java 库在 C++ 中是否有像 std::lower_bound() 、std::upper_bound() 这样的
- Java是否有默认的复制构造函数(就像C++中一样)
- Java是否有类似于c ++的组合功能?
- Python/ c++ /Java:是否有一个库可以识别字符并告诉我它们在图像中的位置
- Java是否像c++一样有未定义的行为?