是否使用算术而不是显式/单值索引数组会导致问题?

问题描述 投票:3回答:2
a[b]

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

a[b & c]

如果&的运算符优先级低于+,那么这会导致*(a + b & c)*(a + (b & c))吗?

c arrays operator-precedence
2个回答
6
投票

C Standard, § 6.5.2.1, Array Subscripting说:

下标运算符[]的定义是E1[E2](*((E1)+(E2)))相同

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


2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.