2012-01-10 12 views
4

C/C++では、< >などの比較演算子のほうが優先度が==よりも高くなっています。 PythonでPythonとC/C++の比較演算子の優先度

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

質問

ので、C/C++で、コードがtrueまたは1と評価されます:

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

しかし、Pythonで、それは間違っているようですすべての比較演算子は同じ優先順位を持ちますか?

答えて

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

ありがとう、それはかなり明確です、私はPythonのdocをチェックします。 – Alcott

3

短い答え:ええ、すべての比較は、同じ優先順位を持って

長い答え:比較演算子は同じを与えただけでなく、行うには、PythonでPrecedence on Python

+1

賢明なこと:式 –

+1

の前後に括弧を入れてください。そうすれば、PythonとC/C++の両方で比較式の前後にかっこを入れるのがよいでしょうか? – Alcott

+1

@Alcott:上記のC++コードのように、スペースを使用して優先順位を示すようにしたい場合は、かっこを入れる必要があります。そうしないと、スペースが嘘となる可能性があります。 –