Skip to content

演算子

This content is not available in your language yet.

Sobakasu では算術、比較、論理演算、代入などに演算子を使用します。

複数の演算子を括弧なしで続けた場合、優先順位の高い演算子から先にまとまります。次の表では、数字が大きいほど優先順位が高くなります。

優先順位 演算子 種類
12 +x -x !x ~x 単項演算
11 * / % 乗算・除算・剰余
10 + - 加算・減算
9 << >> ビットシフト
8 < <= > >= 大小比較
7 == != 等値比較
6 & ビット AND
5 ^ ビット XOR
4 | ビット OR
3 && 論理 AND
2 || 論理 OR
1 = += -= *= /= %= &= |= ^= <<= >>= 代入

たとえば、

let result = a + b * c;

は a + (b * c) と同じ意味です。

同じ優先順位の演算子が続いたときに、どちら側からまとまるかを結合規則と呼びます。

代入演算子は右からまとまります。

x = y = 1;

これは x = (y = 1) と同じ意味です。

その他の二項演算子は左からまとまります。

&& と || は短絡評価を行います。短絡評価とは、左辺だけで結果が確定した場合に右辺を評価しない動作です。

a && b では、まず a を評価します。a が false なら結果はその時点で false となり、b は評価されません。

a || b では、まず a を評価します。a が true なら結果はその時点で true となり、b は評価されません。

このため、右辺に関数呼び出しや値の変更がある場合、その処理が実行されないことがあります。

演算子が存在していても、すべての型の組み合わせで使えるわけではありません。

たとえば + は加算に対応している型でだけ使用できます。対応していない型同士に演算子を使うとコンパイルエラーになります。

function 宣言では、演算子を関数名として定義できます。標準ライブラリや型の implementation は、この仕組みを使って各型に対する演算子の意味を提供します。

通常の利用側コードでは、これらを a + b のような演算子式として使用します。