+ 1

# Why the answer to this question is not true?

int x = 3; int y = 8; if(!(x > 2 || y < 0)) printf("true"); else printf("false"); //y is 8. 8 is not less than 0, so this expression is true. If one of the expression is true, then why the answer is not "true"?

6 Answers

+ 16

β lets see the 1stexpression : (x > 2 || y < 0)
Here, 1st condition (x>2) is true, so result of whole expression will be true only.
β now putting ! on it, ie !(x > 2 || y < 0) => !(true) => false
//have a look at this post also [Little DIFFERENT]
https://www.sololearn.com/Discuss/1632203/?ref=app

+ 16

if any of the condition will be true (connected by || operator) it will return true only

+ 5

STUDENT Piyakon (Kon) Cheung Maybe you're thinking too complicated.
It will evaluate the expression (x > 2 || y < 0) first. x > 2 is true, so it won't even check if y < 0 is true or false because if one condition is true, the whole expression is true.
In the next step, the result is negated because of the !(). So you get the negation of true which is false.

+ 1

So it will read the first expression first?

0

3>2.So it's true and ! makes it false.

0

x>2 - true
y<0 - false
(x>2 || y<0) - true since its logical OR operator
!(true) - false
* if statements are executed only if the the expression or condition of 'if' is true .
the code becomes..
if(false)
printf("true");
else
printf("false");
now, since the condition inside if is false, it will execute the else statement which is 'false'
hence, it prints false..