数值类型
整数
- 🌟
Tips: 如果我们没有显式的给予变量一个类型,那编译器会自动帮我们推导一个类型
2. // 移除某个部分让代码工作
3. fn main() {
4. let x: i32 = 5;
5. let mut y: u32 = 5;
7. y = x;
9. let z = 10; // 这里 z 的类型是?
10. }
- 🌟
2. // 填空
3. fn main() {
4. let v: u16 = 38_u8 as __;
5. }
- 🌟🌟🌟
Tips: 如果我们没有显式的给予变量一个类型,那编译器会自动帮我们推导一个类型
2. // 修改 `assert_eq!` 让代码工作
3. fn main() {
4. let x = 5;
5. assert_eq!("u32".to_string(), type_of(&x));
6. }
8. // 以下函数可以获取传入参数的类型,并返回类型的字符串形式,例如 "i8", "u8", "i32", "u32"
9. fn type_of<T>(_: &T) -> String {
10. format!("{}", std::any::type_name::<T>())
11. }
- 🌟🌟
2. // 填空,让代码工作
3. fn main() {
4. assert_eq!(i8::MAX, __);
5. assert_eq!(u8::MAX, __);
6. }
- 🌟🌟
2. // 解决代码中的错误和 `panic`
3. fn main() {
4. let v1 = 251_u8 + 8;
5. let v2 = i8::checked_add(251, 8).unwrap();
6. println!("{},{}",v1,v2);
7. }
- 🌟🌟
2. // 修改 `assert!` 让代码工作
3. fn main() {
4. let v = 1_024 + 0xff + 0o77 + 0b1111_1111;
5. assert!(v == 1579);
6. }
浮点数
- 🌟
2. // 将 ? 替换成你的答案
3. fn main() {
4. let x = 1_000.000_1; // ?
5. let y: f32 = 0.12; // f32
6. let z = 0.01_f64; // f64
7. }
- 🌟🌟 使用两种方法来让下面代码工作
2. fn main() {
3. assert!(0.1+0.2==0.3);
4. }
序列Range
- 🌟🌟 两个目标: 1. 修改
assert!让它工作 2. 让println!输出: 97 - 122
1. fn main() {
2. let mut sum = 0;
3. for i in -3..2 {
4. sum += i
5. }
7. assert!(sum == -3);
9. for c in 'a'..='z' {
10. println!("{}",c);
11. }
12. }
- 🌟🌟
2. // 填空
3. use std::ops::{Range, RangeInclusive};
4. fn main() {
5. assert_eq!((1..__), Range{ start: 1, end: 5 });
6. assert_eq!((1..__), RangeInclusive::new(1, 5));
7. }
计算
- 🌟
2. // 填空,并解决错误
3. fn main() {
4. // 整数加法
5. assert!(1u32 + 2 == __);
7. // 整数减法
8. assert!(1i32 - 2 == __);
9. assert!(1u8 - 2 == -1);
11. assert!(3 * 50 == __);
13. assert!(9.6 / 3.2 == 3.0); // error ! 修改它让代码工作
15. assert!(24 % 5 == __);
17. // 逻辑与或非操作
18. assert!(true && false == __);
19. assert!(true || false == __);
20. assert!(!true == __);
22. // 位操作
23. println!("0011 AND 0101 is {:04b}", 0b0011u32 & 0b0101);
24. println!("0011 OR 0101 is {:04b}", 0b0011u32 | 0b0101);
25. println!("0011 XOR 0101 is {:04b}", 0b0011u32 ^ 0b0101);
26. println!("1 << 5 is {}", 1u32 << 5);
27. println!("0x80 >> 2 is 0x{:x}", 0x80u32 >> 2);
28. }
你可以在这里找到答案(在 solutions 路径下)
