Мне интересно, насколько универсальная языковая парадигма позволяет простой if (x) ...
проверять ненулевое значение (по крайней мере для переменной integer )?(в противоположность явному требованию оператора: if (x != 0)
)
Мотивировано этим вопросом , который был помечен как независимый от языка, но это даже не на 100% правильно для языков, в настоящее время распространенныхиспользовать, хотя это достаточно близко.Это всегда верно для языков со слабой типизацией?
(Предположим, что x был определен, поэтому нам не нужно беспокоиться об этом или об исключениях. Возможно, x не обязательно инициализирован, носчитайте, что это отдельный случай.)
Вот резюме:
C/C++, PERL, Python, PHP, Ruby, BASIC: Yes
C#, Java; Pascal, Modula-2 & other descendants of Pascal: illegal - must be Boolean
Fortran: Illegal syntax - must be Boolean
LISP: All integers considered true, nil considered false.
bash: Legal, but beware 0 signifies command success and nonzero signifies failure