Здравствуйте, Андрей Тарасевич, Вы писали:
АТ>Здравствуйте, ilvi, Вы писали:
I>>Что выведет программа :
АТ>Поведение не определено, поэтому гадать о том, что "выведет" эта программа, нет совершенно никакого смысла.
Угу. И в новом стандарте таковым остается.
Легкий вопрос оказался
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Простая задачка :)
От:
Аноним
Дата:
19.03.09 07:35
Оценка:
Здравствуйте, ilvi, Вы писали:
I>Что выведет программа :
Естественно Wow!
Деление с плавающей точкой даст результат что-то типа #.INF но ни к каким ошибкам не приведет.
Здравствуйте, Аноним, Вы писали: А>Естественно Wow! А>Деление с плавающей точкой даст результат что-то типа #.INF но ни к каким ошибкам не приведет.
Проверил на g++ (GCC) 4.1.2 — действительно результат inf.
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, ilvi, Вы писали:
I>>Что выведет программа :
А>Естественно Wow! А>Деление с плавающей точкой даст результат что-то типа #.INF но ни к каким ошибкам не приведет.
Не везде. Под MinGW и VC++ при стандартных настройках да.
На Builder C++ поведение по умолчанию будет другое, программка просто упадет. Если запустить её же под отладчиком то начнет непрерывно кидать EZeroDivide. Сборка приложения с использованием vcl позволяет приложению отработать без сбоев, но в выводе будет Fine!
Собственно это и подвигло на посмотреть стандарт, а потом оформить в виде задачки.
Под виндой похоже можно настроить, чтоб бросалось исключение и в MinGW и VC++. Для этого нужно выполнить вызов функции _control87 до деления. Другое дело, что это исключение try catch не поймает. В VC++ поможет __try __except. В MinGW незнаю, что поможет.
Здравствуйте, ilvi, Вы писали:
I>Здравствуйте, ilvi, Вы писали:
I>Под виндой похоже можно настроить, чтоб бросалось исключение и в MinGW и VC++. Для этого нужно выполнить вызов функции _control87 до деления. Другое дело, что это исключение try catch не поймает. В VC++ поможет __try __except. В MinGW незнаю, что поможет.
Ну если уж совсем точно, то для VС++ try catch поймает, если установлен ключ /EHa
Здравствуйте, Vamp, Вы писали:
V>Интересно, а если заменить переменные на константы, и предположить, что умный компилятор выполнет расчет в компайл-тайм, что он сделает?
MinGW c -O3 своего поведения не изменил VC++ c /Ox тоже не изменил своего поведения.