Rust 数据类型
类型系统代表了语言支持的不同类型的值。类型系统在将值存储或操作之前检查其有效性,以确保代码的行为符合预期。类型系统还允许更丰富的代码提示和自动化文档。
Rust 是一种静态类型语言。Rust 中的每个值都是某种数据类型。编译器可以根据赋给变量的值自动推断数据类型。
声明变量
使用 let 关键字来声明变量。
在上面的示例中,变量的数据类型将通过分配给它们的值来推断。例如,Rust将字符串数据类型分配给变量company_string,将浮点数据类型分配给rating_float等。 println!宏接受两个参数−
- 一个特殊的语法{ },用作占位符
- 变量名或常量
占位符将被变量的值替换。 以上代码片段的输出将是−
标量类型
标量类型代表单个值。例如,10、3.14和’c’。Rust有四种主要的标量类型。
- 整数
- 浮点数
- 布尔值
- 字符
我们将在后续章节中学习每种类型。
整数
整数是没有小数部分的数。简单地说,整数数据类型用于表示整数。
整数可以进一步分为有符号和无符号。有符号整数可以存储负值和正值。无符号整数只能存储正值。下面是整数类型的详细描述。
Sr.No. | Size | Signed | Unsigned |
---|---|---|---|
1 | 8 bit | i8 | u8 |
2 | 16 bit | i16 | u16 |
3 | 32 bit | i32 | u32 |
4 | 64 bit | i64 | u64 |
5 | 128 bit | i128 | u128 |
6 | Arch | isize | usize |
整数的大小可以是arch。这意味着数据类型的大小将根据计算机的架构来确定。在x86计算机上,大小为arch的整数将是32位,而在x64计算机上将是64位。当对某种集合进行索引时,arch整数主要用于此目的。
说明
将下面的英文翻译成中文,不解释,保留HTML格式:
输出如下所示−
如果将 age 的值替换为浮点数,上面的代码将返回编译错误。
整数范围
每个有符号的变量可以存储从 -(2^(n-1) to 2^(n-1) -1 的数字,其中n是该变量使用的位数。例如,i8可以存储从 -(2^7)到2^7 -1 的数字-在这里我们用8替换了 n 。
每个无符号的变量可以存储从 0 到 (2^n)-1 的数字。例如,u8可以存储从 0 到 (2^8)-1 的数字,也就是0到255。
整数溢出
当赋给整数变量的值超过Rust定义的数据类型范围时,会发生整数溢出。让我们通过一个示例来理解这个问题-
无符号u8变量的有效范围是0到255。在以上示例中,变量的值大于255(Rust中整数变量的上限)。执行时,以上代码将返回一个警告 − 警告 − u8字面值超出范围 对于weight、height和score变量。超出255后的溢出值将从0、1、2等开始。没有警告的最终输出如下所示 −
浮点数
在Rust中,浮点数数据类型可以分为 f32 和 f64 。f32类型是单精度浮点数,而f64具有双精度。默认类型是f64。考虑以下示例以更好理解浮点数数据类型。
输出如下所示:
自动类型转换在Rust中不被允许。考虑以下代码片段。整数值被赋给浮点变量 interest 。
编译器会抛出一个 类型不匹配错误 ,如下所示。
数字分隔符
为了方便阅读大数字,我们可以使用可视分隔符“_下划线”来分隔数字。例如,50,000可以写作50_000。以下是示例。
以下是输出−
布尔类型
布尔类型有两个可能的值 – true 或 false。使用bool关键字声明布尔变量。
示例
以上代码的输出将为−
字符
在Rust中,字符数据类型支持数字、字母、Unicode和特殊字符。使用 char 关键字声明一个字符数据类型的变量。Rust的char类型表示Unicode标量值,这意味着它可以表示比ASCII更多的内容。Unicode标量值的范围从 U+0000 到 U+D7FF 和 U+E000 到 U+10FFFF 。
让我们以一个示例来更好地理解字符数据类型。
以上代码的输出为: