[ Solved ] Why comparison 5 <= x <= 10 wont work in below code | SoloLearn: Learn to code for FREE!

+9

[ Solved ] Why comparison 5 <= x <= 10 wont work in below code

While x >= 5 && x <= 10 works fine. https://code.sololearn.com/cJzkCi5S0Aux/?ref=app

1/16/2021 10:30:14 AM

Mr. Rahul

11 Answers

New Answer

+3

Comparison operators like < , >, == will compare the two elements and return either true (1) or false (0). In your case first 5<=x will be evaluated first and return 0 or 1 and both (0&1) less than 10. so this will create infinite loop and never comes out from while and causes runtime error. So to combine two or more comparison operation always use && , || to combine them.

+4

Because in c++ you must write && for and

+3

Mr. Rahul No, C++ does not support that feature.

+3

Mr. Rahul try this: #include <iostream> using namespace std; string b="I got this!", c="Help me Batman", d="Good Luck out there!"; int a; string Batman(int a){ if (a<5) return b; else if ((a>=5)&&(a<=10)) return c; else return d; } int main(){ cin>>a; cout<<Batman(a); return 0; } 🤗

+3

Mr. Rahul I don't know much about cpp, but still let me try and answer your question. Suppose you have a statement- x = y = 5; Here first y is assigned 5 and then x is assigned the value of y i.e. 5. So we can say that the expression y = 5, it self returns a value of 5 which we then store in x. The takeaway here is that a relational expression and an assignment always returns a value. So 5 <= x <= 10 is confusing because if the expression x <= 10 returns true, 5 <= true doesn't make any sense. I hope it helped. If anywhere I was wrong, kindly correct me.

+3

Mr. Rahul In java, booleans are not converted to 0s and 1s. So if you compare numbers with booleans, you get an error. Whereas, in cpp, the boolean is converted to numbers that's why your program is still working and that's the same reason why the compiler gives a warning.

+3

Mr. Rahul Ok, Welcome 🤗

+2

Because the comparison x <= 5 will return a bool, which is then implicitely converted to an integer, i.e. 0 or 1, and either value is always smaller than 10. That is why you need the logical operators to chain multiple conditions together, e.g. &&.

+2

Shadow sir Can i not compare it directly like 5 <= x <= 10 While using && operator like x >= 5 && x <= 10

+2

Thx Devansh Singh Bisht But i know this way or more already🤗

+2

♨ Soumik 🎶 I was simply taking x as integer And compare it ;if that integer is greater or equal to 5 and less or equal to 10 then return a string as output. But the comparison wont working in a single line as 5<= x <= 10 While i have to separate it with && operator for execution😑