13 / 11 / 4
Регистрация: 08.07.2017
Сообщений: 103
|
||||||
1 | ||||||
приоритет операций. опять(снова)20.07.2020, 18:46. Показов 2119. Ответов 4
Метки нет (Все метки)
0 1 2 4 Почему такой приоритет? Видел несколько таблиц приоритетов, присваивание приоритет 15. постфиксный инкремент - 2, (в некоторых таблицах - 3) ,но ассоциативность все равно справа налево! разыменование - 3. По логике так и так получается, сначала инкремент, потом разыменование, потом взятие значение по вычисленному адресу и присваивание. а на практике GCC компилятор сначала берет значение по адресу! проверил. И только префиксный инкремент сначала вычисляется а потом за ним разыменование. То есть, я думал, что при первом выводе будет уже единица на выходе! Объясните, где я ошибаюсь...
0
|
20.07.2020, 18:46 | |
Ответы с готовыми решениями:
4
приоритет операций Приоритет операций Приоритет побитовых операций Логические операции и приоритет операций |
Вездепух
12792 / 6669 / 1795
Регистрация: 18.10.2014
Сообщений: 16,876
|
|
20.07.2020, 18:53 | 2 |
"Приоритет операций" и "ассоциативность" описывают процесс синтаксического разбора текста выражения.
Приоритет операций не имеет никакого отношения к порядку вычисления выражения, т.е. никакого отношения к тому, что будет "сначала", а что "потом".
1
|
Вездепух
12792 / 6669 / 1795
Регистрация: 18.10.2014
Сообщений: 16,876
|
|
20.07.2020, 19:03 | 3 |
Сообщение было отмечено HerrSchneider как решение
Решение
С чего бы это вдруг? Приоритеты операций говорят, что выражение
y=*x++ разбирается синтаксическим анализатором как ( y ) = (* (x++) ) . То есть ++ относится к x , а * относится к результату x++ , а = стоит между y и результатом * . На этом задача приоритетов заканчивается. Про приоритеты можно теперь забыть - они нам больше не нужны.А дальше мы идем в определение постфиксного инкремента и видим, что результатом постфиксного инкремента является старое значение x (до инкремента). То есть оператор * будет применяться к старому значению x и результатом его будет именно нулевой элемент массива str .Ваши второе и третье выражения полностью эквивалентны первому - дополнительные скобки ни на что не влияют, ибо приоритеты операций и так дают точно такой же синтаксический разбор.
1
|
13 / 11 / 4
Регистрация: 08.07.2017
Сообщений: 103
|
|
20.07.2020, 21:57 [ТС] | 4 |
Раньше где то читал такое объяснение. А после стал думать, что это всего лишь мнемоника, когда увидел таблицу приоритетов. думал что от нее надо отталкиваться. А сейчас погуглил, и нашел, что, в общем-то знал.
Спасибо. напомнили.
0
|
20.07.2020, 22:27 | 5 | |||||
HerrSchneider, *x++ вполне валидная конструкция. Оператор x++ всегда возвращает значение ДО инкремента. То что у него приоритет выше разыменования - роли не играет. Приоритет может и выше, но возвращаемое значение, к которому применится * будет "до".
0
|
20.07.2020, 22:27 | |
20.07.2020, 22:27 | |
Помогаю со студенческими работами здесь
5
Функция дужки(приоритет операций) в калькуляторе Приоритет операций в калькуляторе C6281: Неверный порядок операций: операторы отношений имеют более высокий приоритет, чем битовые операторы Приоритет логических операций и операций над множествами. Приоритет операций Приоритет операций Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |