Мой вопрос касается следующей строки кода, взятой из "Языка программирования C", 2-е издание:
*p++->str;
Книга говорит, что эта строка кода увеличивает p после доступа к тому, на что указывает str.
Мое понимание таково:
Приоритет и ассоциативность говорят, что порядок, в котором будут оцениваться операторы, равен
- ->
- ++
- *
Оператор приращения постфикса ++ возвращает значение (то есть значение его операнда) и имеет побочный эффект увеличения этого операнда до следующей точки последовательности (т. Е. Следующего;)
Приоритет и ассоциативность описывают порядок, в котором оцениваются операторы, а не порядок, в котором оцениваются операнды операторов.
Мой вопрос:
Мой вопрос касается оценки оператора наивысшего приоритета (->) в этом выражении. Я считаю, что оценивать этот оператор - значит оценивать оба операнда, а затем применять оператор.
С точки зрения оператора -> левый операнд p или p ++? Я понимаю, что оба возвращают одно и то же значение.
Однако, если первый вариант верен, я хотел бы спросить: «Как при оценке оператора -> можно игнорировать присутствие ++».
Если второй вариант верен, я бы спросил: "не вычисляет ли -> в этом случае, тогда требует оценки оператора с более низким приоритетом ++ здесь (и оценка ++ завершается до оценки -> ) "?