c# - C++ 与 C# - 数组

标签 c# c++

让我们有一个数组 a = {0,1,2,3,4} 和一个 int i = 2。现在让我们在两者中做一些操作(总是从上面的点开始)。

a[i] = i++; // a = {0, 1, 2, 3, 4}
a[i] = ++i, // a = {0, 1, 3, 3, 4}

这对我来说似乎合乎逻辑。但是对于 C++,我得到了不同的结果:

a[i] = i++;  // a = {0, 1, 2, 2, 4}
a[i] = ++i;  // a = {0, 1, 2, 3, 4}

我不明白我在 C++ 中得到的结果;

最佳答案

C# 从左到右求值,所以在第一种情况下,你会得到:

a[2] = 2; // 1)
a[2] = 3; // 2)

在 C++ 中,这是未定义的行为,但自 C++17 起,赋值运算符从右到左求值:

a[3] = 2; // 1)
a[3] = 3; // 2)

不同的语言,不同的规则。

关于c# - C++ 与 C# - 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46524367/

相关文章:

c# - 使用 ASP.NET 标识的动态访问控制

c# - 等待后的代码不起作用

c++ - 当字符串变量被重新分配一个新值时,用于字符串的内存去了哪里?

c++ - Qt 我应该从 QDataStream 派生吗?

c++ - system()并继承lxc功能

java - Java 的 instanceof 的 C++ 版本是什么? : checking, 未转换

C# 发件人问题

c# - 为什么我的 foreach 不工作?

c# - 仅运行 .Net 2.0 与 3.5 我错过了什么?

c++ - Qsettings 只能存储一次值吗?