RUST——数据类型

发布时间 2023-04-10 10:47:56作者: 理想国的糕

RUST中文官方教程【Link

1. 标量数据类型

1.1 整型

长度 有符号 无符号
8-bit i8 u8
16-bit i16 u16
32-bit(默认类型) i32 u32
64-bit i64 u64
126-bit i128 u128
arch isize usize

其中in存储的是\([-2^{(n-1)},2^{(n-1)}-1]\)之间的整数,un存储的是\([0,2^{n}-1]\)之间的整数;
另外,isizeusize 类型依赖运行程序的计算机架构:64 位架构上它们是 64 位的,32 位架构上它们是 32 位的;
可以用这些un或者in作为整数的后缀来指定整数的类型,比如57u8
允许使用_作为分隔符方便读数,比如1_000的值于指定的1000相同

1.1.1 整型的字面值

数字字面值 例子
Decimal (十进制) 98_222
Hex (十六进制) 0xff
Octal (八进制) 0o77
Binary (二进制) 0b1111_0000
Byte (单字节字符)(仅限于u8) b'A'

1.2 浮点型

浮点数采用 IEEE-754 标准表示:
f32-单精度浮点数
f64-双精度浮点数
默认浮点数是f64

fn main() {
    let x = 2.0; // f64

    let y: f32 = 3.0; // f32
}

1.3 布尔型

bool,值为true或者false,和cpp类似

1.4 字符类型

char类型,这里不举例了,值得一提的是rust有一些自带的可爱的特定字符值

2. 复合类型

可以将多个值组合成一个类型。Rust有两个原生复合类型:元组(yuple)和数组(array);

2.1 元组类型

元组是一个将多个其他类型的值组合进一个复合类型的主要方式。元组长度固定:一旦声明,其长度不会增大或缩小。
我们使用包含在圆括号中的逗号分隔的值列表来创建一个元组。元组中的每一个位置都有一个类型,而且这些不同值的类型也不必是相同的。

fn main() {
    let x: (i32, f64, u8) = (500, 6.4, 1);

    let five_hundred = x.0;

    let six_point_four = x.1;

    let one = x.2;
    //但是直接输出println!({x.0});报错
}

2.2 数组类型

另一个包含多个值的方式是 数组(array)。与元组不同,数组中的每个元素的类型必须相同。Rust 中的数组与一些其他语言中的数组不同,Rust 中的数组长度是固定的。

fn main() {
    let a = [1, 2, 3, 4, 5];
    let months = ["January", "February", "March", "April", "May", "June", "July",
              "August", "September", "October", "November", "December"];
    let a: [i32; 5] = [1, 2, 3, 4, 5];//创建i32的数量为5个的数组
    let a = [3; 5];//等价于创建了长度为5,初始值为3的数组
}

访问数组元素,同cpp,不可越界访问:

fn main() {
    let a = [1, 2, 3, 4, 5];
    let first = a[0];
    let second = a[1];
}