前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >05.Rust-整型

05.Rust-整型

原创
作者头像
面向加薪学习
修改2022-09-04 11:34:45
4920
修改2022-09-04 11:34:45
举报
文章被收录于专栏:面向加薪学习面向加薪学习

最大值 std::u128::MAX,它的值是 340282366920938463463374607431768211455

最小值 std::i128::MIN,它的值是 -170141183460469231731687303715884105728

整数可以分为 有符号整型无符号整型

  • 有符号整型,英文 signed,既可以存储正数,也可以存储负数。
  • 无符号整型,因为 unsigned,只能存储正数。

大小

有符号

无符号

8 bit

i8

u8

16 bit

i16

u16

32 bit

i32

u32

64 bit

i64

u64

128 bit

i128

u128

Arch

isize

usize

按照存储空间来说,整型可以进一步划分为 1字节2字节4字节8字节16字节

1 字节 = 8 位,每一位能只能存储二进制 0 或 1,因此每一个字节能够存储的最大数字是 256,而最小数字则是 -127。

整型的长度还可以是 archarch 是由 CPU 构架决定的大小的整型类型。大小为 arch 的整数在 x86 机器上为 32 位,在 x64 机器上为 64 位。

i32 是默认的整型。

代码语言:txt
复制
 let price = 100;    // i32 默认
 let price2:u32 = 200;
 let price3:i32 = -300;
 let price4:isize = 400;
 let price5:usize = 500;

 println!("price is {}", price);
 //输出 price is 100

 println!("price2 is {} and price3 is {}", price3, price2);
 //输出 price2 is -300 and price3 is 200

 println!("price4 is {} and price5 is {}", price4, price5);
 //输出 price4 is 400 and price5 is 500

如果类型和值不匹配,编译不会通过,并且报错。

代码语言:txt
复制
let price6:i32=66.66
编译器会提示:mismatched types [E0308] expected `i32`, found `f64`

整型取值范围

有符号整型 能够存储的最小值为 -(2^(n-1),能够存储的最大值为 2^(n-1) -1

无符号整型 能够存储的最小值为 0,能够存储的最大值为 2^n - 1

其中 n 是指数据类型的大小。(上面表格里的第一列)

整型 i8 ,能够存储的最小值为 -(2^(8-1)) = -128。最大值为 (2^(8-1)-1) = 127

整型溢出

我们已经计算了 i8 的最大值是 127。我给一个更大的数值会如何呢?

代码语言:txt
复制
  let price7:i8=192;
  println!("price7 is {}", price7);

  报错如下:
  16 |     let price7:i8=192;
   |                   ^^^
   |
   = note: `#[deny(overflowing_literals)]` on by default
   = note: the literal `192` does not fit into the type `i8` whose range is `-128..=127`
   = help: consider using the type `u8` instead

很明确的告诉你超出了 i8 的范围

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 整型取值范围
  • 整型溢出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档