OberonCore https://forum.oberoncore.ru/ |
|
C++, очередной сюрприз https://forum.oberoncore.ru/viewtopic.php?f=27&t=2222 |
Страница 2 из 2 |
Автор: | igor [ Среда, 06 Январь, 2010 12:29 ] |
Заголовок сообщения: | Re: C++, очередной сюрприз |
Значит "сюрприз" подтвердился. kemiisto молодец! Тем, кто программирует на Си, полезно будет знать о таких сюрпризах. |
Автор: | Валерий Лаптев [ Среда, 06 Январь, 2010 15:36 ] |
Заголовок сообщения: | Re: C++, очередной сюрприз |
igor писал(а): kemiisto писал(а): Код: if (0 <= value <= 5) Что тут происходит (?):
Это не компилятор. Это - язык программирования. Тяжелое наследие детства, то есть С. |
Автор: | Валерий Лаптев [ Среда, 06 Январь, 2010 15:40 ] |
Заголовок сообщения: | Re: C++, очередной сюрприз |
kemiisto писал(а): Да не важно. В С/С++ нет такой штуки, как двойные неравенства. Двойные неравенства - это обычное выражение с точки зрения С++. Поэтому двойные неравенства есть. Другое дело, что вычисляются они не совсем так, как предполагает начинающий программист... Что, собственно, вы и показали... |
Автор: | Alexey Veselovsky [ Четверг, 07 Январь, 2010 02:27 ] |
Заголовок сообщения: | Re: C++, очередной сюрприз |
для пущего усугубления эффекта: Код: int x = 1; if (12 < 10 <= x <= 14 + 10 == 1 ) std::cout << "some output\n"; Но это естественно грабли для совсем начинающих. Причем грабли не С++, а чисто С. |
Автор: | Geniepro [ Понедельник, 18 Январь, 2010 13:30 ] |
Заголовок сообщения: | Re: C++, очередной сюрприз |
kemiisto писал(а): Оказывается С++ поддерживает двойные неравенства в роли условных выражений. Сегодня увидел. Скомпилируйте ... И насладитесь ответом. Причём здесь С++? Это ещё со времён Си так осталось. Кстати, а вот в языке Oxygene (ранее Chrome) / Delphi Prism это работает так, как вы ожидали: Цитата: Boolean Double Comparisons
Easily compare values against boundaries with statements such as if 0 <= x < Count then //... |
Автор: | Geniepro [ Понедельник, 18 Январь, 2010 13:34 ] |
Заголовок сообщения: | Re: C++, очередной сюрприз |
igor писал(а): Значит "сюрприз" подтвердился. kemiisto молодец! Тем, кто программирует на Си, полезно будет знать о таких сюрпризах. В чём заключается сюрприз -- непонятно. Первым делом, что должен знать программист на си -- это то, что "ложь" -- это ноль, а "истина" -- это не ноль... |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |