RUST 学习日记 第6课 ——基本数据类型

RUST 学习日记 第6课 ——基本数据类型


0x00 回顾

上一节讲解了变量和常量,主要了解了他们的区别。也初步感觉到在Rust中对安全性。这节咱们讲解常用的一些基本数据类型。数据类型是Rust作为强类型的静态编译语言的基础。Rust常见的基本数据类型有整数类型,浮点数类型,字符类型,布尔类型等。

0x01 整数类型(Integer)

下表是Rust中常见的整型:

长度 有符号 无符号
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
128-bit i128 u128
arch isize usize

每一个变体都存在有符号无符号两种数据,其中i(signed int的缩写)表示有符号,u(unsigned int的缩写)表示无符号。每一个有符号的变体可以储存包含从 -(2n - 1) 到 2n - 1 - 1 在内的数字,这里 n 是变体使用的位数。所以 i8 可以储存从 -(27) 到 27 - 1 在内的数字,也就是从 -128 到 127。无符号的变体可以储存从 0 到 2n - 1 的数字,所以 u8 可以储存从 0 到 28 - 1 的数字,也就是从 0 到 255。另外,isizeusize 类型依赖运行程序的计算机架构:64 位架构上它们是 64 位的, 32 位架构上它们是 32 位的。

示例代码如下:

    // 默认 i32 类型
    let a = 20;
    // 声明无符号整数 类型声明
    let b: u32 = 300;
    // 后缀声明
    let c = 4000u32;
整型溢出(Integer Overflow)
    let mut d : i8 = 127;
    d = 128;

可变变量d是一个 i8 类型的整数,它的取值范围是 [-128,127]。那么当你将其修改为 128 时会发生什么呢?尝试编译下,会发现报下面的错误。

image

这被称为 整型溢出。当Rust在编译时,Rust会检查这类问题并使程序 Panic, Panic这个术语被 Rust 用来表明程序因错误而退出。关于Panic会在后续章节介绍。在这里先了解即可。

0x02 浮点数(Float)

说白了浮点数就是通常我们所说的小数,如:1.9-99.99等。浮点数又分为f32f64两种类型。

  • f32 又称为 单精度浮点型。小数点后至少有6位有效数字。
  • f64 又称为 双精度浮点型,如果声明变量时不指定类型, 则是Rust 默认的浮点类型。小数点后至少有15位有效数字。

示例代码如下:

    // 默认类型
    let f1 = 0.0;
    // 类型声明
    let f2: f32 = 54.0;
    // 后缀声明
    let f3 = 99.999f32;

Rust中定义浮点数时必须存在小数点,它也是区分整型和浮点数的唯一标准,不得将整型赋值给浮点数。如下图,编译器会提示错误,编译也不会通过。

image

0x03 布尔型(Bool)

哈哈,这个很简单了。就俩值,不是true就是false。一般用于逻辑判断中。示例代码如下:

    // 默认不声明类型
    let g = true;
    // 声明类型
    let h : bool = false;

0x04 字符类型(Char)

Rust的底层编码是UTF-8,与常见的C,C++,Java等语言使用ASCII编码不同。Rust 中的 字符数据类型 包含了 数字、字母Unicode其它特殊字符。其每个字符占4个字节,由单引号来定义。字符类型代表的是一个Unicode标量值(Unicode Scalar Value)。Unicode 编码的标量值的范围从 U+0000U+D7AF(包含), U+E000U+10FFFF(包含),了解更多关于Unicode的信息请前往百度百科。

示例代码如下:

// 默认不声明类型
    let i = 'i';
    // 声明类型
    let j: char = 'j';
    // emoji表情
    let k = '';
    // 汉字
    let l = '中';
    // 藏文
    let m = '?';

0x05 小结

本节了解了Rust的常见数据类型,有整数型,浮点型,布尔型,字符型。得知Rust各数据类型之间不能隐式的相互转换。但是它们之间依然是可以相互转换的,需要用到其它方法,下节也会介绍。感兴趣的可以提前查下资料哦~

0x06 本节源码

006/data_type · StudyRust - 码云 - 开源中国 (gitee.com)

下节预告——了解字面量和常用的运算符,学会使用Rust来做一些简单的运算。

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容