【Rust入門】数字の書き方

変数に値を代入するときに数字や文字列を直接書くことは多々あります。プログラム上に直接書かれた数字や文字列をリテラルと言います。
今回は数字の書き方についてです。

前回は基本データ型(プリミティブ型)について紹介しています。
基本データ型(プリミティブ型)について

Rustで数字を表記する方法

数字の書き方なんて覚えるまでもないと思うかもしれませんが、Rustでは色々な数字の表し方があるのでご紹介させていただきます。

例えは、10000000のように桁の多い数字はパッと見ただけでは分かりにくいですよね。
普段の生活では、10,000,000にしてカンマで区切ることはよくありますが、Rustではカンマの代わりに「_」を使って数字を区切ることができます。

100000000 100_000_000
0.000001 0.00_0001

2進数、8進数、16進数の表し方

私達が普段使っている数字は10進数ですが、Rustでは他にも、2進数、8進数、16進数を使うことができます。

例:15を表現する
2進数 0b00001111
8進数 0o17
16進数 0x0f

C言語は2進数の表記ができませんが、Rustでは2進数の表記も対応しています。
そのため、ビット単位の計算をより簡潔に書くことができます。

ちなみに、これらの数の頭に付けた文字「0b」、「0o」、「0x」をプリフィックス(接頭辞)と言います。

変数へ代入する時の書き方

Rustでは同じ型の値しか変数へ代入することができません。
例えば

fn main() {
	let value : i16 = 30;
}

この例のように変数を宣言して代入をすると、30はi16型として代入されます。
このように数字を代入すると、可能な範囲で変数の型に合わせて自動で型変換をしてくれます。

変換できないこともあるので注意してください。
例えば、整数の型に小数を入れるとコンパイルエラーになります。

fn main() {
	let value : i16 = 0.05;// ← 小数は代入できない。コンパイルエラーになる。
}

数字で型を直接指定して代入する

他には、変数ではなく、代入する数字の方で型を指定する方法があります。
例えば

fn main() {
	let value = 30;
}

このように変数を宣言すると、valueはi32型になります。
これをもしu8型として代入したいときは、

fn main() {
	let value = 30u8;
}

このように、数字の末尾に型を付けて代入をすることでvalueをu8型として認識させることができます。

Rustでは数字の末尾にに型名を入れることで型を指定することができます。この末尾に入れる文字をサフィックス(接尾辞)と言います。

fn main() {
	let value1 = 30u8;    // ← u8型
	let value2 = 30i32;   // ← i32型
	let value3 = 30.0f64; // ← f64型
}

このようにすれば、数字で変数の型を指定することができます。

スポンサーリンク