Russian Qt Forum
Ноябрь 25, 2024, 01:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Полезная строка/inline  (Прочитано 18439 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Август 09, 2009, 22:46 »

Добрый день

Разбирался с чужой программой и нашел строчку

if (!(a >= 0) && !(a < 0)) {
...
}

Это совсем не бессмысленно (как с первого взгляда кажется :-)
Записан
spectre71
Гость
« Ответ #1 : Август 09, 2009, 22:58 »

Добрый день

Разбирался с чужой программой и нашел строчку

if (!(a >= 0) && !(a < 0)) {
...
}

Это совсем не бессмысленно (как с первого взгляда кажется :-)
Всегда == false =>  бред!
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #2 : Август 09, 2009, 23:11 »

Абсолютно бессмысленно: блок выполнится только при истинности левой (!(а>=0)) и правой частей (!(a<0)). Применив отрицание, получим левую часть a<0 и правую - a>=0. Какое же значение для одновременного выполнения условий может принимать а, если вся область чисел рассмотрена?
Записан
f-r-o-s-t
Гость
« Ответ #3 : Август 09, 2009, 23:17 »

Наверное все просто и там внутри просто написан код, который никогда не должен выполняться =)
Записан
BlackTass
Гость
« Ответ #4 : Август 09, 2009, 23:35 »

Еще есть вариант что архитектуру разрабатывал человек с неустойчивой психикой и a является экземпляром класса, в котором переопредлены операторы >= и < таким образом, что данное условие в некоторых случаях может выполняться  Подмигивающий
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Август 09, 2009, 23:36 »

Абсолютно бессмысленно: блок выполнится только при истинности левой (!(а>=0)) и правой частей (!(a<0)). Применив отрицание, получим левую часть a<0 и правую - a>=0. Какое же значение для одновременного выполнения условий может принимать а, если вся область чисел рассмотрена?
В том-то и дело, что не вся  Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Август 09, 2009, 23:44 »

Еще есть вариант что архитектуру разрабатывал человек с неустойчивой психикой и a является экземпляром класса, в котором переопредлены операторы >= и < таким образом, что данное условие в некоторых случаях может выполняться  Подмигивающий

- никаких классов/перегрузок нет.

- писал болгарин, очень сильный программер

- работает на любой платформе и размер в 10 раз меньше чем делать то же по-другому (как, кстати было сделано у меня  Подмигивающий)
Записан
spectre71
Гость
« Ответ #7 : Август 10, 2009, 00:05 »

- никаких классов/перегрузок нет.
- писал болгарин, очень сильный программер
- работает на любой платформе и размер в 10 раз меньше чем делать то же по-другому (как, кстати было сделано у меня  Подмигивающий)
Да... Веселый Веселый Веселый
Особенно прикольно про любую платформу.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Август 10, 2009, 08:36 »

Если к записи:
!(a >= 0) && !(a < 0)
применить правило деМоргана, то получим:
!((a >= 0) || (a < 0))

(в некоторых случаях может быть нагляднее)

Но смысла записи я всё-равно не понял
Записан

Юра.
Tonal
Гость
« Ответ #9 : Август 10, 2009, 10:14 »

Тип a не float || double часом? Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Август 10, 2009, 16:36 »

Тип a не float || double часом? Улыбающийся
Да
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #11 : Август 11, 2009, 01:41 »

проверка на -0 штоле?

Доп. Хотя нет, -0 == 0, так что (a >= 0) вернет true...
« Последнее редактирование: Август 11, 2009, 11:49 от AX » Записан
Tonal
Гость
« Ответ #12 : Август 11, 2009, 11:14 »

Хороший приём. Улыбающийся
Записан
spectre71
Гость
« Ответ #13 : Август 11, 2009, 11:30 »

Хороший приём. Улыбающийся
Для любого a имеющего тип объекты которого принадлежат упорядоченному множеству и операции "<" , ">" "==", ..., правильно определены для данного типа, данное выражение ВСЕГДА false.
Соответственно, для любого значения float и double - ВСЕГДА false.
Так что ничего полезного в нем нет!
Над вами просто прикололись!
Записан
SASA
Гость
« Ответ #14 : Август 11, 2009, 11:33 »

проверка на -0 штоле?
Можно по подробнее.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.122 секунд. Запросов: 23.