a[b]
相当于*(a + b)
,所以......
a[b & c]
如果&
的运算符优先级低于+
,那么这会导致*(a + b & c)
或*(a + (b & c))
吗?
C Standard, § 6.5.2.1, Array Subscripting说:
下标运算符
[]
的定义是E1[E2]
与(*((E1)+(E2)))
相同
请注意围绕E2
的括号。后一种表达方式(*(a + (b & c))
)是正确的结果。
a[b]
是*((a) +(b))
所以a[b & c]
是*((a)+(b & c))
是*(a+(b & c))
如果你喜欢