|
kimi07
|
|
Каков будет результат действия a++-++a?07.08.2013, 17:16. Показов 12126. Ответов 54
Метки нет (Все метки)
|
|
| 07.08.2013, 17:16 | |
|
Ответы с готовыми решениями:
54
Каков будет результат выполнения кода?
Каков будет результат работы функции? |
|
|
||||
| 14.08.2013, 23:21 | ||||
|
0
|
||||
|
13 / 2 / 2
Регистрация: 17.10.2012
Сообщений: 57
|
|
| 15.08.2013, 10:29 | |
|
во-первых,не знаю,почему у вас выдает 0,возможно все-таки не windows стоит или среда чуть другая
приоритет операций,согласна.и я его верно описала. можно почитать любую литературу и убедиться в этом оно эквивалентно. я не спорила бы,если бы на практике это сама не проверила. взять и принтовать экран не сложно и вставить сюда.
0
|
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||
| 15.08.2013, 10:40 | ||
|
Точки следования ограничивают порядок вычислений. В C/C++ же порядок вычисления операций (за некоторыми исключениями: логические операторы, тернарный оператор, оператор запятой) не определён.
0
|
||
|
13 / 2 / 2
Регистрация: 17.10.2012
Сообщений: 57
|
|
| 15.08.2013, 10:46 | |
|
по-моему,все согласятся,что первый а++, вот потом да...тут как уже понимается все зависит от среды. потому что ,так как я сжу по тому,то выдает мне мой запуск программы,то там никакой логики нет ибо ответ -1,
если же вспоминать всякие хитрости ,в плане,все-таки приоритет , то по логике должен выполниться вторым ++а-а,а потом увеличение только на 1. Так все-таки снова вспоминая разницу между ++а и а++,надо помнить,что один сразу увеличивает,а потом все выполняет,а другой наоборот.
0
|
|
|
|
||||||
| 15.08.2013, 10:59 | ||||||
|
1. a++ (постфиксный инкремент - приоритет 2)
2. ++a (префиксный инкремент - приоритет 3) 3. cout << a - a; (бинарный минус - приоритет 6) Что не понятно? Кликните здесь для просмотра всего текста
0
|
||||||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||
| 15.08.2013, 11:24 | ||
|
У обоих инкрементов приоритет выше, чем у бинарного минуса, поэтому всё выражение парсится так: (a++) - (++a). Вот здесь роль приоритета заканчивается. Далее для того, чтобы вычислить значение выражения (а именно, найти значение разности), необходимо предварительно вычислить оба аргумента бинарного минуса. В зависимости от того, в каком порядке вычисляются эти аргументы, мы получим разные значения. А соль в том, что порядок вычисления операторов в C/C++ не определён (исключения в моём предыдущем сообщении), поэтому это полностью и целиком зависит от того, какой компилятор используется (и какая у него версия). Именно поэтому у тебя и у Lokomoss получились разные результаты. К слову, у меня при компиляции clang'ом выдаётся -2, и тут совершенно нечему удивляться:
0
|
||
|
|
|||||||
| 15.08.2013, 11:45 | |||||||
Сообщение было отмечено как решение
РешениеДобавлено через 5 минут Вариант типа "++a + a++" - слишком симметричный, а в эмпирически решаемых вопросах никогда не надо рассматривать симметричных случаев. Надо взять более кособокий пример:
0
|
|||||||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
| 15.08.2013, 11:52 | |
|
0
|
|
|
|
|||
| 15.08.2013, 12:06 | |||
|
И именно по таким причинам в языках типа C есть понятие undefined behavior, связанное с порядком вычисления операндов. Всякие неопределённые поведения в случае НЕинициализированных переменных, обращений по кривым указателям и т.п. - с этим обычно вопросов не возникает. Вопросы возникают с неопределённым поведением в арифметических операциях и т.п. Добавлено через 1 минуту
0
|
|||
| 15.08.2013, 12:42 | ||
|
1
|
||
|
|
|||
| 15.08.2013, 12:49 | |||
|
C *p++ + *++p C *++p + *p++ Добавлено через 1 минуту
0
|
|||
|
|
||
| 15.08.2013, 12:52 | ||
|
Про логические операции && и || это ты верно заметил. Их текущее поведение точно так же "нелогично", поскольку мы знаем, что в математике от перестановки аргументов логических "и" и "или" результат не меняется, а в программировании, получается, результат может быть и разным. Но в случае логических операций, судя по всему, было проще пожертвовать математической логикой и зафиксировать порядок вычислений.
Добавлено через 46 секунд
1
|
||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|||
| 15.08.2013, 12:53 | |||
|
1
|
|||
| 15.08.2013, 12:53 | ||
|
0
|
||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||
| 15.08.2013, 12:54 | ||
|
0
|
||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||
| 15.08.2013, 13:01 | ||
|
А порядок вычисления выражений (не только логических) в математике, кстати, тоже не определён, т.к. он там ни на что не влияет, побочных эффектов-то нету.
0
|
||
| 15.08.2013, 13:01 | |
|
Каков будет результат функции при a=12 Каков будет результат функции при a=5? b=5? Каков будет результат следующего примера ? Каков будет результат выполнения след кода ? Каков будет результат при заданных условиях Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|