Progrust Library.

// dictionary

数値演算.

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

演算子 意味
+ 加算 5 + 38
- 減算 5 - 32
* 乗算 5 * 315
/ 除算 7 / 23(整数は切り捨て)
% 剰余 7 % 21
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 + 1count += 1 と書けます。なお、Rustには ++ / --(インクリメント・デクリメント演算子)はありません。

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

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

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

backlinks 3

  1. 動かして学ぶRustプログラミング問題集 › 第2章 基本の型と演算
  2. 動かして学ぶRustプログラミング問題集 › 第3章 制御フロー
  3. 動かして学ぶRustプログラミング問題集 › 第4章 関数