Alcott
Alcott

Reputation: 18605

Comparison operators' priority in Python vs C/C++

In C/C++, comparison operators such as < > have higher priority than == does. This code will evaluate to true or 1:

if(3<4 == 2<3) {  //3<4 == 2<3 will evaluate to true
    ...
}

But in Python, it seems wrong:

3<4 == 2<3  #this will evaluate to False in Python.

In Python, does every comparison operator have the same priority?

Upvotes: 6

Views: 1978

Answers (2)

avakar
avakar

Reputation: 32685

In Python, not only do comparison operators gave the same priority, they are treated specially (they chain rather than group). From the documentation:

Formally, if a, b, c, ..., y, z are expressions and op1, op2, ..., opN are comparison operators, then a op1 b op2 c ... y opN z is equivalent to a op1 b and b op2 c and ... and y opN z, except that each expression is evaluated at most once.

In your case, the expression

3<4 == 2<3

is equivalent to

3 < 4 and 4 == 2 and 2 < 3

which is False due to the second clause.

Upvotes: 6

Ricardo C&#225;rdenes
Ricardo C&#225;rdenes

Reputation: 9172

Short answer: yeah, all the comparisons have the same precedence

Long answer: you may want to have a look on the documentation: Precedence on Python

Upvotes: 3

Related Questions