Операторы И и ИЛИ могут иметь ярлыки.
Таким образом, &&
пробует второе выражение только в том случае, если первое верно (похоже на правду, более конкретно).Тот факт, что вторая операция делает вещи (независимо от того, что делает foo()
), не имеет значения, потому что она не выполняется , если , то первое выражение не оценивается как нечто правдивое.Если это правда, то для выполнения второго теста будет выполнено .
И наоборот, если первое выражение в операторе ||
истинно, второе - нетприкоснуться.Это сделано потому, что весь оператор уже может быть оценен, оператор будет иметь значение true независимо от результата второго выражения, поэтому он будет проигнорирован и останется невыполненным.
Случаи, на которые следует обращать внимание при использованииСокращения, подобные этому, конечно, являются случаями с операторами, в которых определенные переменные все еще оцениваются как ложные значения (например, 0
), и истинные (например, 'zero'
).