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