3、流程控制语句

if和else

if语句

if关键字后面跟着一个代码块,只有当if后面的条件表达式的值为true的时候,代码块才会执行

if <条件表达式> {
	//代码块
}

else语句

else语句可以跟在if语句后面,当if后面的条件表达式的值为false的时候,代码块才会执行

let number=3;
if number<5{
	println!("number is smaller than 5");
}
else{
	println!("number is greater than 5");
}

其实这些都是很常规的东西,我这里只是简单过一下(

这里要注意的其实就是简单的格式问题,在C/C++中,条件表达式是要加括号的

if(number<5){
	std::cout<<"number is smaller than 5"<<std::endl;
}

rust中不加括号,这一点要注意下,别的就没什么了

else if语句

多个流程控制可以使用else if语句

比如

let num=5;
if num<5{
	println!("num is smaller than 5");
}
else if num>=3{
	println!("num is greater than 3");
}
else{
	println!("num is smaller than 3");
}

Booleans 布尔类型

条件表达式的类型,必须是bool类型,在rust语言中,这一点更加明显,rust对类型的要求极其严格,所以一般的表达式,不是bool类型就不是bool类型,根本不存在隐式的布尔类型转换

在C/C++中,可以这样编码

TreeNode *head=new TreeNode();
...
if(head){
	...
}

这段代码,其实就是说,如果head为空指针的话,那么if语句会把 nullptr 这个值视为 false ,或者 if(num){} 这种也是可以的,只要num不是0,那就是true

但是rust不能这样玩,前面也提到过,如果这样做的话,编译会出错

image-20250828213849813

image-20250828213910811

条件运算符

这里和其他语言也差不多

== 等于

!= 不等于

< 小于

> 大于

<= 小于等于

>= 大于等于

……

if/else 是一个表达式

这一点算是挺有意思的设计,我查了一下资料,这个理念是借鉴的函数式编程设计简单来讲就是可以这样编码

let number=3;
let message=if number<5{
	"smaller than 5"
}else{
	"greater than 5"
};

这个设计我觉得非常棒,如果是在C/C++中,那么想实现这样的功能,代码会比较冗余,你还可以把代码集成到各种函数的参数里面,完全可以当作一个表达式来用!

不过有一点要注意

if/else作为表达式时一定要有else代码块

查资料的时候看到了,if/else作为表达式时一定要有else代码块

这是rust的设计理念

防止代码逻辑没有处理到全部的情况,有else语句,能确保不管条件表达式如何变化,这个if/else表达式一定能命中一条分支执行,如果没有的话,那么可能无法执行,返回一个(),这样会导致一些难以处理的bug

所以一定要有else代码块,else if有没有则无所谓

image-20250828215907365

image-20250828215918685

图上的help也说明了,考虑添加else代码块,以处理预期以外的事件,毕竟假如num<3的话,n就没有值了,那就糟糕了

改成这样就OK了

image-20250828220108703

 

练习

 

image-20250828220410154

image-20250828220441225

也是很顺利地通过了

image-20250828220516276

今天的这一节的笔记就先到这了,下一节再见,

ヾ( ̄▽ ̄)ByeBye

 

 

阅读剩余
THE END