計算を行ったりif文の条件を付けるために演算子を使用します。
これらの演算子には優先度があります。
なぜ、優先度があるのかというと複数の演算子を使用して条件文を作成する際にどの順序で実行されるか不明確になります。そこで、演算子に順序を付けて正確に制御します。
演算子の優先度は下のようになります。
演算子 | 説明 | 優先度 |
() | かっこ | 1 |
** | べき乗 | 2 |
+x,-x,~x | 単項演算子 | 3 |
*,/,//,% | 掛け算、割り算系 | 4 |
+,- | 足し算、引き算 | 5 |
<<,>> | ビットシフト | 6 |
& | ビット演算子AND | 7 |
^ | ビット演算子XOR | 8 |
` | ビット演算子OR | 9 |
<,<=,>,>=,==,!= | 比較演算子 | 10 |
not | 論理演算子not | 11 |
and | 論理演算子and | 12 |
or | 論理演算子or | 13 |
優先度の値が小さい方が優先度が高くなっています。
例えば、掛け算・割り算は足し算・引き算より優先されます。数学でも掛け算・割り算は足し算・引き算ようにプログラムでも優先されます。
a = 1
b = 2
c = 3
total = a + b * c
print(total)
このプログラムであれば掛け算が優先されるのでまず、b×cが実行されその後にaが足し算されます。結果は
7
となります。次に()を使ったプログラムで実行すると
a = 1
b = 2
c = 3
total = (a + b) * c
print(total)
このプログラムでは()が最も優先度が高いので()から実行されます。()の中にあるa+bが計算されその合計がcと掛け算されます。結果は
9
となります。
このように、演算子には優先度があり、この優先度を守らないと希望する結果と異なる結果になる可能性があります。
コメント