龙空技术网

Rust语言:变量与基本数据类型

冰原猫 65

前言:

眼前兄弟们对“变量转换的用途和类型”都比较注意,大家都想要知道一些“变量转换的用途和类型”的相关文章。那么小编同时在网上网罗了一些关于“变量转换的用途和类型””的相关文章,希望我们能喜欢,各位老铁们一起来了解一下吧!

在Rust中,变量默认是不可变的。

数据类型和其它语言一样,分为标量和复合类型,也就是栈与堆的区别,Rust对这两种类别有严格的界定,因为内存分配方式不同。

标量数据类型:

整型(i8, i16 .. i128,u8, u16 .. u128)浮点(f32, f64)布尔:bool (true, false)字符:char复合量数据类型:元组:不同类型的数据列表,类似python,但以.N索引。数组:相同类型的数据列表,类似C数组,不可动态扩展,使用[i]索引Type Annotation:显式标记变量类型,通过冒号指定,let x: u32 = 5;

Rust是强类型语言,这点与Python截然不同,也不完全等同于C/C++,因为C/C++不会阻止类型强转。在Rust中,类型强转有可能失败,这点在枚举再说。

Rust使用 let 语句“定义”一个变量,更准确地说是将一块数据绑定到一个变量。

在其它语言中,大家习惯了定义(或者说赋值)的说法,但实际上把 int *p = malloc(100) 称为将这块内存绑定到指针p上,或许才是其本质含义。

let a = 32; // 默认i32类型

编译器不能推断出类型时(会报错),或默认类型推断不符合实际要求时,需要显示声明类型:

let b : u64 = 32;

如果需要变量可修改,需要加mut关键字:

let mut c = 520;

整型

Length  Signed Unsigned8-bit   i8     u816-bit  i16    u1632-bit  i32    u3264-bit  i64    u64128-bit i128   u128arch    isize  usize

128位整型在很多语言里都没有。

整数运算和其它语言一样,加、减、乘、除、求余。

浮点:f32和f64,默认是64位浮点。

布尔类型:true和false

字符类型:char,支持utf8,放个emoji是没问题的。

元组,和Python差不多

let tup: (i32, f64, u8) = (500, 6.4, 1);

借用Python世界的一句话,元组不是只将一组数据糅合起来,位置也是它提供的一个很重要的功能。

数组,和C差不多,分配在栈。

a = [1, 2, 3, 4, 5];

元素类型必须相同,和C是一样的,与Python的列表不同。

因为数组是分配在栈上的,所以决定了数据长度不能动态变化。提供相似的功能的是vector,vector在堆分配,所以支持动态分配。

标签: #变量转换的用途和类型 #c语言数据类型及输出