使用算术索引数组而不是 explicit/single 值会导致问题吗?

Does indexing an array w/ arithmetic rather than an explicit/single value, cause issues?

a[b]

相当于*(a + b),所以...

a[b & c]

其中 & 的运算符优先级低于 +,这会导致 *(a + b & c) 还是 *(a + (b & c))

C Standard, § 6.5.2.1, Array Subscripting 说:

The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2)))

请注意 E2 周围的括号。后一个表达式 (*(a + (b & c))) 是正确的结果。

a[b]*((a) +(b)) 所以 a[b & c]*((a)+(b & c))*(a+(b & c)) 如果你喜欢