x <b>&&</b> y
выполняет x
, затем выполняет y
, только если x
выполняет (т. Е. Имеет состояние выхода 0)
x <b>||</b> y
выполняет x
, тогда выполняется только y
, если x
не удается (т. е. имеет ненулевой статус выхода)
Вывод x
не имеет значения.
Одно место, которое они делают не отличаются, имеет приоритет. В отличие от логических операторов в других языках, &&
и ||
имеют равный приоритет, поэтому что-то вроде
a || b && c
анализируется и оценивается так же, как
{ a || b; } && c
, а не
a || { b && c; }