Только если вы не выходите за пределы диапазона.Например, в этом:
int a[] = {1, 2, 3, 4, 5};
int *p = (a + 10) - 9;
int *q = a + (10 - 9);
Присвоение p
вызывает неопределенное поведение, тогда как присваивание q
- нет.
Пока вы находитесь в диапазоне,тем не менее, вы ожидаете, что ассоциативность сохранится.
Кстати, обратите внимание, что в вашем вопросе две вещи, которые вы даете, одинаковы по определению, поскольку сложение (ну, в любом случае, добавление в диапазоне) является левоассоциативным.То есть x + y + z == (x + y) + z
, а не x + (y + z)
.