int
и bool
не могут быть преобразованы неявно (в отличие, например, от C ++).
Это было сознательное решение, принятое разработчиками языка для того, чтобысохранить код от ошибок, когда число использовалось в условии.Условия должны явно принимать значение boolean
.
Невозможно написать:
int foo = 10;
if(foo) {
// Do something
}
Представьте, что разработчик хотел сравнить foo с 20, но пропустил один знак равенства:
if(foo = 20) {
// Do something
}
Приведенный выше код будет компилироваться и работать - и побочные эффекты могут быть не очень очевидными.
Подобные улучшения были сделаны в switch
: вы не можете попасть из одного случая вдругое - вам нужен явный break
или return
.