本章覆盖:
- 整数和浮点四则运算
- 多个语句程序编写
- 打印多行
¶Adding Integer Numbers
1 | print!("{} + {} = {}", 34, 80, 80 + 34); |
1 | print!("{}", (23 - 6) 5 5 + 20 * 30 / (3 + 4)); |
¶Floating-Point Arithmetic
1 | print!("The sum is {}", 80.3 + 24.8); // the sum is 115.1 |
为什么?
在数字字面量后面加一个 .
后,它将被转换为浮点型字面量,值不变。优先级和整数四则运算相同,尽管除法有不同的结果。
让我们看看表达式是如何执行的。
23. - 6.
和 3. + 4.
的求值和整数类似。
17. % 5.,2.
的求值和整数类似。该操作在C语言中不支持,对应于C语言的fmod(17., 5.)
。
"20. * 30.",600.
的求值和整数类似。
600. / 7.
的求值,既不会得到二进制计数法,也不会得到十进制计数法。内部得到一个近似二进制的格式;通过Rust可以将该数值转换为十进制格式,你将得到一个85.71428571428571
。
最后 2.
被添加到二进制数值,得到的数值不能精确表示,所以它按照上面的方式打印出来。
和C语言不通,Rust不能简单地混入整数和浮点数。下述语句会获得编译错误:
1 | print!("{}", 2.7 + 1); |
最简单的方式是加一个点:
1 | print!("{}", 2.7 + 1.); |
和其他语言不同,在遇到两个类型不同的操作时,机器语言会隐式将数字1转换为浮点型,或者,将1作为常量,在编译器再转换为浮点型。然而在Rust中,这种操作必须是显式的(explicit)。
最后,%
操作,表示模数(modulo),更接近的释义是取余(remainder)。数学中的取余操作对负数有不同的行为。在Rust中%
和C相同。
1 | print!("{} {}", -12 % 10, -1.2 % 1.); |
输出为: “-2 -0.1999999999999996”
¶Sequences of Statements
Rust推崇下面的习惯:
- 函数内4个空格的缩进;
- 避免语句内连续的空格;
- 不超过80 columns的宽度,尽可能将长语句拆分为几行。
¶Breaking Literal Strings
1 | println!("{}", "This" |
上述在Rust中不能像C那样并列,该语句是不合法的。
1 | println!("{}", "These |
上述将输出:
These
are
three lines
1 | println!("{}", "This \ |
上述将输出:
This is just one line