This seems to be trivial but I forget how conditions are treated,
if(!a && b)
here if a
is true
then it will check for b
also? or it will see the &&
and stop?
Asked
Active
Viewed 45 times
0
-
2Are you referring to the logical AND operator(`&&`)? In that case, it will not check `b` if `a` is true. Read about short-circuiting. – Spikatrix Apr 25 '15 at 13:35
-
1@CoolGuy [`and` is the same as `&&`](http://en.cppreference.com/w/cpp/language/operator_alternative). – Emil Laine Apr 25 '15 at 13:36
-
1Damn, was just about to mark it a duplicate of this one: http://stackoverflow.com/questions/628526/is-short-circuiting-boolean-operators-mandated-in-c-c-and-evaluation-order – Barry Apr 25 '15 at 13:37
-
Ok so it seems that `the && operator guarantees left-to-right evaluation; there is a sequence point after the evaluation of the first operand. If the first operand compares equal to 0, the second operand is not evaluated` Thanks – Mihai Apr 25 '15 at 13:42
-
@zenith , I did not know that because I'm not familiar with C++ much. Thanks for the info! – Spikatrix Apr 25 '15 at 13:43
-
So to not open a new question, for this case `if(!(a=b))` firstly a takes b value and then it;s evaluated? For ex if b=0 then that condition will be true right? – Mihai Apr 26 '15 at 11:40