Rust 數(shù)據(jù)類型

Rust 語言中的基礎(chǔ)數(shù)據(jù)類型有以下幾種。

整數(shù)型(Integer)

整數(shù)型簡稱整型,按照比特位長度和有無符號分為一下種類:

位長度有符號無符號
8-biti8u8
16-biti16u16
32-biti32u32
64-biti64u64
128-biti128u128
archisizeusize

isize 和 usize 兩種整數(shù)類型是用來衡量數(shù)據(jù)大小的,它們的位長度取決于所運行的目標(biāo)平臺,如果是 32 位架構(gòu)的處理器將使用 32 位位長度整型。

整數(shù)的表述方法有以下幾種:

進(jìn)制
十進(jìn)制98_222
十六進(jìn)制0xff
八進(jìn)制0o77
二進(jìn)制0b1111_0000
字節(jié)(只能表示 u8 型)b'A'

很顯然,有的整數(shù)中間存在一個下劃線,這種設(shè)計可以讓人們在輸入一個很大的數(shù)字時更容易判斷數(shù)字的值大概是多少。

浮點數(shù)型(Floating-Point)

Rust 與其它語言一樣支持 32 位浮點數(shù)(f32)和 64 位浮點數(shù)(f64)。默認(rèn)情況下,64.0 將表示 64 位浮點數(shù),因為現(xiàn)代計算機(jī)處理器對兩種浮點數(shù)計算的速度幾乎相同,但 64 位浮點數(shù)精度更高。

fn main() {
    let x = 2.0; // f64
    let y: f32 = 3.0; // f32
}

數(shù)學(xué)運算

用一段程序反應(yīng)數(shù)學(xué)運算:

fn main() { 
    let sum = 5 + 10; // 加 
    let difference = 95.5 - 4.3; // 減 
    let product = 4 * 30; // 乘 
    let quotient = 56.7 / 32.2; // 除 
    let remainder = 43 % 5; // 求余
}

許多運算符號之后加上 = 號是自運算的意思,例如:

sum += 1 等同于 sum = sum + 1。

注意:Rust 不支持 ++--,因為這兩個運算符出現(xiàn)在變量的前后會影響代碼可讀性,減弱了開發(fā)者對變量改變的意識能力。

布爾型

布爾型用 bool 表示,值只能為 true 或 false。

字符型

字符型用 char 表示。

Rust的 char 類型大小為 4 個字節(jié),代表 Unicode標(biāo)量值,這意味著它可以支持中文,日文和韓文字符等非英文字符甚至表情符號和零寬度空格在 Rust 中都是有效的 char 值。

Unicode 值的范圍從 U+0000 到 U+D7FF 和 U+E000 到 U+10FFFF (包括兩端)。 但是,"字符"這個概念并不存在于 Unicode 中,因此您對"字符"是什么的直覺可能與Rust中的字符概念不匹配。所以一般推薦使用字符串儲存 UTF-8 文字(非英文字符盡可能地出現(xiàn)在字符串中)。

注意:由于中文文字編碼有兩種(GBK 和 UTF-8),所以編程中使用中文字符串有可能導(dǎo)致亂碼的出現(xiàn),這是因為源程序與命令行的文字編碼不一致,所以在 Rust 中字符串和字符都必須使用 UTF-8 編碼,否則編譯器會報錯。

復(fù)合類型

元組用一對 ( ) 包括的一組數(shù)據(jù),可以包含不同種類的數(shù)據(jù):

let tup: (i32, f64, u8) = (500, 6.4, 1);
// tup.0 等于 500
// tup.1 等于 6.4
// tup.2 等于 1
let (x, y, z) = tup;
// y 等于 6.4

數(shù)組用一對 [ ] 包括的同類型數(shù)據(jù)。

let a = [1, 2, 3, 4, 5];
// a 是一個長度為 5 的整型數(shù)組

let b = ["January", "February", "March"];
// b 是一個長度為 3 的字符串?dāng)?shù)組

let c: [i32; 5] = [1, 2, 3, 4, 5];
// c 是一個長度為 5 的 i32 數(shù)組

let d = [3; 5];
// 等同于 let d = [3, 3, 3, 3, 3];

let first = a[0];
let second = a[1];
// 數(shù)組訪問

a[0] = 123; // 錯誤:數(shù)組 a 不可變
let mut a = [1, 2, 3];
a[0] = 4; // 正確
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清