Progrust Library.

// dictionary

整数型.

整数を表すプリミティブ型です。
符号の有無で符号あり整数と符号なし整数に分かれ、ビット幅ごとに複数の型があります。

長さ 符号あり 符号なし
8ビット整数 i8 u8
16ビット整数 i16 u16
32ビット整数 i32 u32
64ビット整数 i64 u64
128ビット整数 i128 u128
アーキテクチャ依存 isize usize
fn main() {
    let stock: u32 = 15; // 在庫数(負にならないのでu32)
    let temperature: i32 = -3; // 気温(負の値もあるのでi32)
    println!("在庫: {}個, 気温: {}度", stock, temperature);
}
Playgroundで開く

変数初期化時のデフォルト型

変数の宣言などで型注釈や周囲の文脈から型が一意に定まらない整数リテラルは、i32 がデフォルトとして採用されます。
そのほかのデフォルト型は型推論のページをご確認ください。

補足

オーバーフロー時の挙動

通常の変数同士の演算がオーバーフローすると、デバッグビルドでは実行時にパニックしますが、リリースビルドでは2の補数によるラッピング(範囲の反対側へ折り返す)動作になります(-C overflow-checks フラグで挙動を制御可能)。一方、定数のようにコンパイル時に値が確定する式では、実行モードに関わらずオーバーフローがコンパイルエラーになります。

fn main() {
    const MAX: u8 = u8::MAX;
    const OVER: u8 = MAX + 1; // エラー: E0080(定数評価中のオーバーフロー)
    println!("{}", OVER);
}
Playgroundで開く
isize / usizeの主な用途

usize はコレクションの要素数やインデックス、メモリ上のサイズを表すのに使われる型で、Vec::len() の戻り値などが該当します。isize はポインタ同士の差分など、負の値も取りうるサイズ計算に使われますが、登場頻度は usize よりずっと低いです。

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

backlinks 12

  1. 辞書キャスト
  2. 辞書クローン
  3. 辞書タプル構造体
  4. 辞書プリミティブ型
  5. 辞書ムーブ
  6. 辞書数値演算
  7. 辞書範囲式
  8. 辞書浮動小数点型
  9. 辞書文字列リテラル
  10. 辞書変換トレイト
  11. 動かして学ぶRustプログラミング問題集 › 第2章 基本の型と演算
  12. 動かして学ぶRustプログラミング問題集 › 第7章 所有権とムーブ