Вызывает ли проблема индексирование массива с арифметикой, а не с явным / единственным значением? - PullRequest
0 голосов
/ 15 февраля 2019
a[b]

Эквивалентно *(a + b), поэтому ...

a[b & c]

Где & имеет более низкий приоритет оператора, чем +, это приведет к *(a + b & c) или *(a + (b & c))

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

a[b] - *((a) +(b)), поэтому a[b & c] - *((a)+(b & c)), *(a+(b & c)), если вы предпочитаете

0 голосов
/ 15 февраля 2019

Стандарт C, § 6.5.2.1 , Подписка на массив говорит:

Определение оператора индекса [] означает, что E1[E2] идентичен (*((E1)+(E2)))

Обратите внимание на скобки, окружающие E2.Последнее выражение (*(a + (b & c))) является правильным результатом.

...