让我们有一个数组 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/