下标运算符优先级
Subscript operator precedence
下标运算符具有第二高的运算符优先级(参见 the table)。但是,它似乎表现得好像它的优先级很低。例如:
int arr[] = {10,20,30,40,50};
cout << arr[1+2];
此代码输出 40,这表明 +
的结果在应用下标运算符之前可用,这反过来表明 +
的优先级高于下标运算符。我错过了什么,下标运算符的高优先级如何表达?
下标运算符 []
应用于 arr
并且 参数 是 1 + 2。参数与 [ 的优先级无关=10=] 运算符.
比照。像 1 + arr[1 + 2]
这样的表达式。这是 grouped as 1 + (arr[1 + 2])
由于您引用的优先级,not (1 + arr)[1 + 2]
这将是一些奇怪的指针算法!
下标运算符具有第二高的运算符优先级(参见 the table)。但是,它似乎表现得好像它的优先级很低。例如:
int arr[] = {10,20,30,40,50};
cout << arr[1+2];
此代码输出 40,这表明 +
的结果在应用下标运算符之前可用,这反过来表明 +
的优先级高于下标运算符。我错过了什么,下标运算符的高优先级如何表达?
下标运算符 []
应用于 arr
并且 参数 是 1 + 2。参数与 [ 的优先级无关=10=] 运算符.
比照。像 1 + arr[1 + 2]
这样的表达式。这是 grouped as 1 + (arr[1 + 2])
由于您引用的优先级,not (1 + arr)[1 + 2]
这将是一些奇怪的指针算法!