ex6: 字面量 (Literals)
字面量(Literals)说明
字面量如果就从“字面”意义上来讲,就是“所见即所得”。你所输入的变量既是你能理解的,也是计算机可以理解并且直接转化为数据存储下来的。这包括了整数、浮点数、字符、字符串等你可以直接在程序中表示出来的量。
不过注意,这和变量还不是一个概念,比如说一个变量绑定语句let x = 1;
,从语法上来讲,等号右边的便是字面量,告诉计算机具体要绑定的变量的值是多少,左边的则是变量名,告诉计算机你要把值附到哪一个变量上。
字面量代表了计算机中实际储存的一些基本的值,一般来讲字面量都是可以和基本数据类型进行绑定的。
你可以参考代码进行理解,也可以查找相关的资料进行进一步的了解。
运算符(operators)
运算符一般代表一个或是两个量的运算操作,最常见的是算数运算符,比如说'+','-','*','/',代表算术运算的加减乘除(除法在整数上做处理会抛弃余数)。
除此之外还有:逻辑运算符,用于进行逻辑运算;位运算符,将一个数作为二进制对于每个位进行运算。
有关运算符实际上最为重要的内容是它们之间的先后处理顺序,但是在这一章中我们可能无法进行展现。我们在这里提供一个参考链接,需要的同学也可以在网络上找到更多的资料(可以参考 C 或 C++ 的运算符介绍)。
unsafe {
基本上的原则就是:
有括号先运算括号
一元运算符高于二元运算符
算术运算中间满足乘除高于加减
算术运算高于位运算
位运算高于逻辑运算
同级别中:与 > 异或 > 或
赋值语句仅高于流程控制相关语句
注:实际上运算符的优先级很多还是和直觉相同的,出了错再记住就可以了
}
代码
代码说明
代码中使用#num
的方法标注了对应的代码说明部分
#1
请注意程序中那些具有后缀的字面量。在 ex5 中我们说明了可以用两种方法标注变量的数据类型。实际上它们有一定的区别:使用类似let x: type = ...;
的方法标注的变量,数据类型绑定在了变量 x 上,编译器会判断你赋给变量的值是否与你标注的相同;使用let x = 10i8
的方法标注则是在字面量上说明这个字面量的具体类型(因为整型和浮点型有很多个不同的大小,不注明的话编译器只能默认它们是默认大小),编译器会根据字面量的类型推断变量的类型。
#2
关于代码中的assert_eq!()
,可以发现它也由 ! 结尾,这说明它也是一个宏。这个宏用于断言(assert),一般用于在程序中判断某个值是不是期望的值(assert_eq!
判断两个值是否相同,不相同则报错)。如果发现程序的运行过程可能出了错误,则 assert 语句会发出警告并终止程序。但是它检查值的时机是在程序运行的时候,所以哪怕一句看上去明显不正确的断言assert_eq!(true, false)
也不会导致编译器报错。
本节总结
在本节中,我们主要介绍了文本量的概念,展示了文本量的声明、计算等内容。
你应该对下面的内容有所掌握:
不同进制整型变量的文本量写法
为什么要进行变量类型以及文本量类型的标注
明确每一个算数运算符的作用
你应该对下面的内容有所了解:
文本量的概念
使用
assert_eq!
进行运行时判断
参考资料
最后更新于