Это звучит как ответ, который я видел раньше, но не могу найти сейчас (ссылка будет полезна), но у вас здесь неправильный конец флешки.
Учитывая ситуацию как:
foo = 0 ;
bar = foo && 2 / foo;
Во второй строке вычисляется foo. Это 0
и, следовательно, ложное значение. Левая часть &&
(foo
) будет возвращена и присвоена bar
.
Теперь, если у нас есть foo = 1
:
foo = 1 ;
bar = foo && 2 / foo;
Опять же, foo
будет оцениваться. Это истинное значение, поэтому правая часть &&
будет оценена и возвращена. 2 / foo
равно 2
, поэтому 2
назначено на bar
.
«Короткое замыкание» просто означает, что как только часть &&
выходит из строя, он возвращает неисправную часть, не оценивая ничего вправо.