title: 数据类型
updated: 2023-11-01T18:30:38.0000000+08:00
created: 2023-10-02T18:08:53.0000000+08:00
字符串类型:
&str
需要使用双引号括起来
整数类型:
u32:无符号的整数类型,占32位空间,范围 0-2的32次方-1,包括0和2的32次方-1
i32:有符号的整数类型,也是32位字节,范围从-2的32次方-1,到2的31次方-1
以此类推,在rust中,8字节到128字节的整数类型都是如此表示
独特的整数类型:arch,表示系统架构,如果计算机是64位的,那么isize/usize就是i32/u32
书写格式:都可以用下划线方便阅读,除了字节以外,都可以使用类型来作为后缀,例如47u8
十进制:10_000
十六进制:0×ff 0x开头
八进制:0o77 0o开头
二进制:0b1111_0000 0b开头
字节:b'AAS' b''把字节放进引号
整数溢出:当你把设置的值超出了它的类型的值,调试模式下会检查这个bug,发布模式-release下不会检查这个bug,如果发生了这个情况,那么rust会执行环绕操作,例如u8类型,最大值为255,如果指定值为258,则会环绕 258=2,
浮点类型:
f32:32位单精度
f64:64位双精度
在现在的cpu上这两种浮点类型的运算速度差不多,但f64精度更高,所以rust使用f64作为默认类型
字符类型:
char:
字符类型的值使用''单引号扩起来,一个字符占用4字节大小,rust的字符值使用Unicode,可以表示拼音,中日韩文,零长度空白字符,emoji表情等等
Tuple:
可以放多个类型的多个值,长度固定,一旦声明就无法改变
let tu:(u32,i32,u32) = (1,-2,33);
println!("x value is {}",tu.0);
可以通过函数名.0这样的格式提取其中的数据,也可以通过元素匹配来解构,例如 let (x,y,z)=tu
数组:
数组里面的元素类型必须相同,和tuple一样声明后无法改变长度
let shuzu: \[i32; 5\]=\[1,7,3,4,5\];
println!("{}",shuzu\[2\]);
如果数组内的元素值也是相同的,可以使用let shuzu = [3; 5]; 效果和[3,3,3,3,3];一样
如果提取索引超出索引范围,编译会报错
数据类型的转换
使用as:需要注意谨慎转换,不然很容易造成内存溢出
仅登录用户可评论,点击 登录