#include
2. main_program {
3. const int a = 2;
4. if (0 < a < 1.5)
5. cout << a;
6. else
7. cout << 2*a;
8. }
The part:
doesn’t do what you think it does: < has left associativity, so the expression 0 < a < 1.5 is parsed as:
(0 < a) < 1.5
0 < a is a bool expression, equal to true:
(true) < 1.5
The other operand of the <, 1.5, is a double, so true is promoted to that, taking the value 1.0:
(1.0) < 1.5
This expression then evaluates to true, so the “then” branch of the if fires, and line 5 (not 7) is executed.
3 Likes