gpt4 book ai didi

c++ - 为什么 arr[-2] 不等于 -2[arr]?

转载 作者:IT老高 更新时间:2023-10-28 12:37:56 26 4
gpt4 key购买 nike

#include <iostream>
using namespace std;

int main()
{
int arr[3] = { 10, 20, 30 };
cout << arr[-2] << endl;
cout << -2[arr] << endl;
return 0;
}

输出:

4196160
-30

这里 arr[-2] 超出范围且无效,导致未定义行为。但是 -2[arr] 的计算结果为 -30。为什么?

arr[-2] 不等于 -2[arr] 吗?

最佳答案

-2[arr] 被解析为 -(2[arr])。在 C 中(在 C++ 中,忽略重载),X[Y] 的定义是 *(X+Y)(更多讨论见 this question) ,这意味着 2[arr] 等于 arr[2]

关于c++ - 为什么 arr[-2] 不等于 -2[arr]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44366118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com