下标运算符优先级

Alw*_*ing 1 c++ operator-precedence

下标运算符具有第二高的运算符优先级(请参阅下表)。但是,它的行为似乎具有较低的优先级。例如:

int arr[] = {10,20,30,40,50};
cout << arr[1+2];
Run Code Online (Sandbox Code Playgroud)

该代码输出40,这表明的结果+在应用下标运算符之前是可用的,这反过来表明它+的优先级高于下标运算符。我缺少什么,下标运算符的高优先级如何表现出来?

Bat*_*eba 5

下标运算符[]应用于,arr参数为1 +2。该参数与[]运算符的优先级无关。

cf. 像这样的表达1 + arr[1 + 2]。即分组1 + (arr[1 + 2])原因在于你举的优先级,没有 (1 + arr)[1 + 2]这将是一些奇怪的指针运算!