式と演算子

代入、算術、ビット演算、論理演算、キャスト、インクリメントとデクリメント、演算子の優先順位を説明します。

Wave Foundation

主な演算子

分類 演算子
算術 +、-、*、/、%
比較 ==、!=、<、<=、>、>=
論理 &&、||、!
ビット &、|、^、~、<<、>>
代入 =、+=、-=、*=、/=、%=
インクリメント/デクリメント ++、--
アドレス/デリファレンス &value、deref pointer
明示的キャスト as
var width: i32 = 12;
var area: i32 = width * 8;
var large: bool = area >= 64;
var widened: i64 = area as i64;
area += 8;

優先順位

演算子は、結合の強い順に次のように評価されます。

  1. 基本演算と後置演算: 呼び出し、フィールドアクセス、インデックス、後置 ++ と --
  2. 単項演算: !、~、&、deref、前置 ++ と --、単項 + と -
  3. as キャスト
  4. *、/、%
  5. +、-
  6. <<、>>
  7. <、<=、>、>=
  8. ==、!=
  9. ビット演算 &、^、|
  10. &&、||
  11. 代入と複合代入

代入は右結合なので、連鎖した代入は右から左へ評価されます。演算子を組み合わせた意図が分かりにくい場合は括弧を使ってください。

代入可能な対象

代入と ++/-- は、変数、フィールド、インデックス付き要素、デリファレンスしたポインタなどのストレージ位置に対して作用します。const 値への書き込みは許可されません。