do trong C++ nó bảo đảm logical AND thực hiện vế trái trước rồi mới quyết định có thực hiện vế phải tiếp hay là ko, ko bao giờ vế phải được tính trước.
Logical AND:
This operator is short-circuiting: if the first operand is true, the second operand is not evaluated.
short-circuiting:
Short-circuit operators are, in effect, control structures rather than simple arithmetic operators, as they are not strict. In imperative language terms (notably C and C++), where side effects are important, short-circuit operators introduce a sequence point – they completely evaluate the first argument, including any side effects, before (optionally) processing the second argument.
Sequence point
Between evaluation of the left and right operands of the && (logical AND), || (logical OR) (as part of short-circuit evaluation), and comma operators. For example, in the expression *p++ != 0 && *q++ != 0
, all side effects of the sub-expression *p++ != 0
are completed before any attempt to access q
.
nên hiểu nó như là cách viết tắt của if else ấy :V a && b
có thể hiểu là if (a) { if (b) {...} }
nên dù có a && (b)
đi nữa thì nó cũng thực hiện như 2 câu lệnh if lồng nhau if (a) if ((b))
thôi :V