Другие языки программирования и технологии

Что оптимальнее: if(a > 0) или if(a != 0) ?

Не написано оптимальнее по какому критерию!
Если речь идёт о скорости выполнения программы, то лучше не использовать if, а заменить на логические выражения
Vahagn Grigoryan
Vahagn Grigoryan
76 473
Лучший ответ
да разные это вещи, a>0 это только положит. числа, а a!=0 так это и отрицат и положит числа
Олег Яковлев
Олег Яковлев
90 309
многое зависит от языка - есть ли строгая типизация или нет и имеется ли в языке автоматическое приведение типов данных. В языке со строгой типизацией не получится вместо a впихнуть строку. А в языке без строгой типизации это вполне реально и значение получится в зависимости от строки. Пусть а="некоторая строка", тогда if (a > 0) вернет true, как впрочем и if (a != 0). Но если a="0", тогда оба условия вернут обычно false. Если a=-n, где n>0, тогда if (a != 0) вернет true, а вот if (a > 0) может вернуть как true (т. е. а не конвертируется в число и рассматривается лишь как строка) , так и false (а конвертируется в число, а отрицательное число всегда меньше нуля) .
Есть еще специальное значение NULL - в зависимости от языка оно может приводиться к нулю или не приводиться ни к какому значению.
Исходя из названных особенностей надо выбирать способ выражения мысли.
Konstantin Klikushin
Konstantin Klikushin
49 513
Зависит от поставленной задачи же. a>0 это все неотрицательные числа (кроме нуля) , а а! =0 это все (и отрицательные, и неотрицательные) числа (кроме нуля)
Сергей Хрипунов Почему именно целые?:)))
Багдат Налибаев Я абсолютно уверен, что "a" не пойдёт ниже нуля
Коля Солоницын > Почему именно целые?:)))
Да-да, туплю. Double, float и другие "не целые" типы тоже.
>Думаю, != всё же быстрее будет работать
Почему? Компилятор же каждое число будет сравнивать с нулем на равенство, а если a>0 то также будет сравнивать, но на условие "больше"
>На x86 одинаково, при условии что компилятор нормальный код сгенерит.
Почему?
if(a != 0)