Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.196.27] |
|
Страницы: (5) [1] 2 3 ... Последняя » все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
В продолжение темы сложного выбора. Обращаю внимание, что речь снова о C++. Примеры, надеюсь, не потребуются
|
Сообщ.
#2
,
|
|
|
Потребуются, ибо выбора между сравнением с нулём и логическим "не" никогда не было. В плюсах, в смысле.
|
Сообщ.
#3
,
|
|
|
Зависит от ситуации. Что понятнее, то и использую. Это не Python, издержек на сравнение с 0 нет
|
Сообщ.
#4
,
|
|
|
Цитата negram @ Потребуются, ибо выбора между сравнением с нулём и логическим "не" никогда не было. В плюсах, в смысле. Это не выбор между нулём и НЕ, это выбор между двумя семантиками проверки нулевого значения |
Сообщ.
#5
,
|
|
|
Когда работаешь с числами - удобнее наверное на 0 проверять. Например делитель числа.
|
Сообщ.
#6
,
|
|
|
Цитата KILLER @ удобнее наверное на 0 проверять Так наверное или удобнее? Сам-то что используешь и в каких ситуациях? |
Сообщ.
#7
,
|
|
|
Цитата B.V. @ Так наверное или удобнее? Сам-то что используешь и в каких ситуациях? Я голоснул за восклицательный знак. Но вообще делитель я бы проверял с помощью if a == 0 togda error, с указателями и прочим юзал бы if !pointer togda error |
Сообщ.
#8
,
|
|
|
Цитата KILLER @ Но вообще делитель я бы проверял с помощью if a == 0 togda error Что-то вспомнилась картинка |
Сообщ.
#9
,
|
|
|
Цитата B.V. @ Что-то вспомнилась картинка Последний вариант прокатит разве что в скриптовых языках или в каком нибудь C# с Java, а в С++ выхватишь Access Violation. |
Сообщ.
#11
,
|
|
|
Цитата B.V. @ Да нет, выхватишь UB. Незнаю что там на счет UB. Может в новом стандарте UB будет, помню у Страуструпа вроде было написано что деление на 0 приведет к аппаратной ошибке процессора, и соответственно обрабатывать такую ошибку нужно с помощью какого нибудь SEH исключения. Стандартные исключения ловят только программные ошибки, и надеяться на то что catch отловит деление на 0 глупая затея. Добавлено Хотя помню компилятор майкрософт в дебаге ловит деление на ноль. В релизе хз. |
Сообщ.
#12
,
|
|
|
Только "!" использую. Ибо вещали (сильно давно), что операция CMP (асм-реализация "==0") крайне тормознутая, а "test" (в случае ! используется, бывает) существенно быстрее!
|
Сообщ.
#13
,
|
|
|
Цитата Славян @ Только "!" использую. Ибо вещали (сильно давно), что операция CMP (асм-реализация "==0") крайне тормознутая, а "test" (в случае ! используется, бывает) существенно быстрее! Не представляю даже, как бы ты на явошарпах с питонами писал бы. Повесился наверное раньше |
Сообщ.
#14
,
|
|
|
Цитата B.V. @ Цитата negram @ Потребуются, ибо выбора между сравнением с нулём и логическим "не" никогда не было. В плюсах, в смысле. Это не выбор между нулём и НЕ, это выбор между двумя семантиками проверки нулевого значения Не было никогда такого выбора в плюсах. Выбор мог быть только у тех, кто воспринимает плюсы как "си с классами". благо, такие уже лет 10-15 как вымерли. |
Сообщ.
#15
,
|
|
|
Цитата Славян @ Для сравнения с нулём CMP никогда не использовался. Даже в простейших компиляторах Small-C и Rat-C сравнение с нулём обрабатывалось отдельно от общего случая.Ибо вещали (сильно давно), что операция CMP (асм-реализация "==0") крайне тормознутая, а "test" (в случае ! используется, бывает) существенно быстрее! Так что тебе лапшу на уши вешали. |