Rust之整数类型


Rust有许多的数字类型

主要分为整数类型和浮点类型

各种整数类型之间的主要区分特征是

有符号与无符号

占据空间大小进行区分


所谓有符号无符号

指的是如何理解内存空间中的bit表达的含义

如果一个变量是有符号类型

那么它的最高位的那一个bit就是符号位

表示该数为正值还是负值


如果一个变量是无符号类型

那么它的最高位和其他位一样

表示该数的大小


比如一个byte大小(8bits)的数据来说

如果存的是无符号数

那么它的表达范围是0到255

如果存的是有符号数

那么它的表达范围是-128到127


关于各个整数类型所占据的空间大小

在名字中就已经表现得很明确了

Rust原生支持了从8位到128位的整数

需要特别关注的是isize和usize类型

它们占据的空间是不定的

与指针占据的空间一致

与所在的平台相关

如果是32位系统上则是32位大小

如果是64位系统上则是64位大小


    // 十进制表示
    let var1 : i32 = 32;      
    println!("{}",var1);

    // 0x开头代表16进制表示
    let var1 : i32 = 0xff;
    println!("{}",var1);

    // 0o开头代表8进制表示
    let var1 : i32 = 0o55;
    println!("{}",var1);

    // 0b开头代表8进制表示
    let var1 : i32 = 0b1001;
    println!("{}",var1);

32
255
45
9

在所有的数字字面量中

可以在任意地方添加任意的下划线以方便阅读

let var = 0x_1234_ABCD;


字面量后面可以跟后缀

可代表该数字的具体类型

从而省略掉显示类型标记

// 不写类型默认为i32类型
let varc = 32;

// usize类型
let varc = 123usize;

// u8类型
let varc = 0x_ff_u8;

在Rust中我们可以为任何一个类型添加方法

整形也不例外

比如在标准库中

整数类型有一个方法是pow

它可以计算n次幂

于是我们可以这么使用

let x : i32 = 9;

println!(" 9 poser 3 = {}", 9_i32.pow(3));


甚至可以不使用变量

直接对整形字面量调用函数

println!("9 power 3 = {}", 9_i32.pow(3));


对于整数类型

如果rust编译器通过上下文无法分析出该变量的具体类型

则自动默认为i32类型

    let x = 10;
    let y = x * x;
    println!("{}",y);

编译器只知道x是一个整数

但是具体是i8 i16 i32或者u8 u16 u32等

并没有足够的信息判断

上面列举的类型都是有可能的

在这种情况下编译器就默认把x当成i32类型处理

这么做的好处是很多时候我们不想在每个地方都明确地指定数字类型

这么做很麻烦

给编译器指定一个在信息不足情况下的缺省类型会更方便一点


enjoy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值