-1 == true; //false
-1 == false //false
-1 ? true : false; //true
Может кто-нибудь объяснить вышеприведенный вывод? Я знаю, что могу обойти это, сравнивая с 0, но мне интересно. Я ожидал бы, что по крайней мере одно из неаккуратных утверждений equals будет истинным, поскольку они неявно преобразуют типы, и я, конечно, не ожидал, что троичный символ даст совершенно другой результат.
В большинстве систем ненулевые значения считаются истинными значениями, но это не обязательно означает, что они те же истинные значения, что и истинные
. Таким образом, -1 == true
не обязательно выполняется, но -1
все же можно считать истинным значением, поскольку оно не равно нулю.
Однако на самом деле вам не следует сравнивать целые числа с булевыми значениями, если вы можете этого избежать.