2012-01-10 3 views
4

C/C++에서 < >과 같은 비교 연산자는 ==보다 우선 순위가 높습니다. Python 대 C/C++의 비교 연산자 우선 순위

그래서 C/C++에서 코드는 true 또는 1로 평가됩니다

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

질문

파이썬에서 :

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

그러나 파이썬에서, 그것은 잘못된 것 같다

모든 비교 연산자는 동일한 우선 순위를 가집니까?

답변

5

: 당신이 설명서에 대한보고를 할 수 있습니다 우선권, 그들은 특별하게 대우된다 (그들은 그룹보다는 오히려 사슬로 매긴다). documentation에서 : a, b, c, ..., y, z 표현식이며 op1, op2, ..., opN 비교 연산자 경우 각 식 많아야 한번 평가 될 것을 제외 형식적

, 다음 a op1 b op2 c ... y opN Z는 op1 b and b op2 c and ... y opN z 동등하다. 귀하의 경우

표현식

3<4 == 2<3 

인해 제 절에

False이다
3 < 4 and 4 == 2 and 2 < 3 

동일하다.

+0

감사합니다. 꽤 명확합니다. 파이썬 문서를 확인합니다. – Alcott

3

짧은 답변 : 네, 모든 비교는 같은 우선 순위를 가지고

긴 대답 : 비교 연산자는 동일했다뿐만 아니라 수행 파이썬에서 Precedence on Python

+1

따라서, 현명한 일을하십시오. –

+1

표현식을 괄호로 묶어서 파이썬과 C/C++ 모두에서 비교 표현식을 괄호로 묶는 것이 좋습니다. – Alcott

+1

@Alcott : 위의 C++ 코드에서와 같이 우선 순위를 표시하기 위해 간격을 사용하도록 유혹되는 경우 괄호를 넣어야합니다. 그렇지 않으면 간격이 "거짓"일 수 있습니다. –

관련 문제