Во всяком случае, можно сказать, что -1
более вероятно будет истинным, чем 1
, поскольку -1
(111..111b
) является побитовым отрицанием нуля (000..000b
).BASIC и GW-BASIC использовали -1, когда им нужно было вернуть истинное значение.
Независимо от этого, Perl решил, что значения, которые означают «пустой» или «ничего», являются ложными.Большинство языков придерживаются аналогичной точки зрения.В частности, целое число ноль, ноль с плавающей точкой, ноль строки, пустая строка и undef являются ложными.
Это задокументировано , хотя документация написана плохо.(В нем указано ()
как ложное значение, но такого значения нет.)
Помимо согласованности, очень полезно использовать этот подход.Например, он позволяет использовать
if (@x)
вместо
if (@x != 0)