Progrust Library.

// dictionary

数値演算.

Rustの数値型は、加算・減算・乗算・除算・剰余の5種類の基本演算をサポートしています。
整数型と浮動小数点型のどちらでも使えますが、異なる型同士をそのまま演算することはできず、asによるキャストなどで型を揃える必要があります。

演算子 意味 例
+ 加算 5 + 3 → 8
- 減算 5 - 3 → 2
* 乗算 5 * 3 → 15
/ 除算 7 / 2 → 3(整数は切り捨て)
% 剰余 7 % 2 → 1
fn main() {
    let budget = 500; // 予算(円)
    let price = 120; // りんご1個の値段(円)
    let count = budget / price; // 買える個数(4.16… → 4に切り捨て)
    let change = budget % price; // 余るお金
    println!("{}円で{}個買えて、{}円余ります", budget, count, change);
}
Playgroundで開く

整数演算の注意点

  • 除算 / は0方向への切り捨てです(-7 / 2 は -3)
  • 剰余 % の結果の符号は左辺(被除数)と同じになります(-7 % 2 は -1)

補足

パニックやエラーになる整数演算
  • 0による除算・剰余は、リリースビルドでも実行時にパニックします(符号付き整数の MIN / -1 も、結果が表現できないため同様にパニックします)
  • 符号なし整数には単項マイナス - を適用できません(エラー: E0600)
  • 加減乗算のオーバーフロー時の挙動は、整数型のページの補足「オーバーフロー時の挙動」を参照してください
異なる型同士の演算はエラー

整数リテラル同士なら型推論で揃いますが、型が確定した変数同士は暗黙に変換されません。ビット幅が違うだけでもエラーになります。

fn main() {
    let count: i32 = 3;
    let total: i64 = 1000;
    println!("{}", total + count); // エラー: E0277(i64にi32を加算できない)
}
Playgroundで開く

total + count as i64 のようにキャストで型を揃えると演算できます。

複合代入演算子

5種類の演算すべてに、演算と代入を同時に行う複合代入演算子があります(+= -= *= /= %=)。count = count + 1 は count += 1 と書けます。なお、Rustには ++ / --(インクリメント・デクリメント演算子)はありません。

演算子に対応するトレイト

各演算子は std::ops のトレイト(+ は Add、- は Sub、* は Mul、/ は Div、% は Rem)に対応しています。これらのトレイトを実装すれば、独自の型にも演算子を使えるようになります(演算子オーバーロード)。

この辞書が使われているページ

backlinks 5

  1. 辞書パニック
  2. 辞書演算子オーバーロード
  3. 本動かして学ぶRustプログラミング問題集 › 第2章 基本の型と演算
  4. 本動かして学ぶRustプログラミング問題集 › 第3章 制御フロー
  5. 本動かして学ぶRustプログラミング問題集 › 第4章 関数