Хотя это уже было сказано и отвечено правильно, я думал, что я добавлю ответ настоящего непрофессионала, потому что на этом сайте я часто чувствую себя :). Кроме того, я добавлю пример & vs. &&, поскольку это та же концепция
| против ||
В основном вы склонны использовать || когда вы только хотите оценить вторую часть, ЕСЛИ первая часть ЛОЖЬ. Итак, это:
if (func1() || func2()) {func3();}
совпадает с
if (func1())
{
func3();
}
else
{
if (func2()) {func3();}
}
Это может быть способом экономии времени обработки. Если func2 () занимает много времени, вы не захотите делать это, если func1 () уже была верна.
& vs &&
В случае & vs. && это аналогичная ситуация, когда вы оцениваете только вторую часть, ЕСЛИ первая часть ИСТИНА. Например это:
if (func1() && func2()) {func3();}
совпадает с
if (func1())
{
if (func2()) {func3();}}
}
Это может быть необходимо, так как func2 () может зависеть от того, что func1 () сначала будет истинным. Если вы используете & и func1 () оценивается как false, & в любом случае запускает func2 (), что может вызвать ошибку времени выполнения.
Джефф-мирянин