⑤分支与循环

提前说一下哦,C语言是结构化的程序设计语言,结构是说顺序结构、选择结构、循环结构

if语句

if

语法形式为下

if(表达式)
  语句

当表达式为 真 时,语句执行,反之为 假 时语句不执行。

那何谓 真 何为 假呢?
c语言中,0为假,非0为真。简单来讲,表达式的结果为0时,语句不执行,反之执行。

else

if—else语法形式如下:

if(表达式)
  语句1
else
  语句2

分支中包含多条语句

注意,if与else语句中默认都只控制一条语句。那怎么如果想控制多条语句,可在if/else后加入{ },从而控制多条语句—这个块也叫程序块,或者复合语句

嵌套if

在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断
格式如下
1️⃣

if(表达式1)
	语句1
else if(表达式2)
	语句2
...
else 
	语句n

2️⃣

if(表达式1)
	{
	if(表达式2)
		语句1
	else
		语句2
	}
else
	语句3

悬空else问题

对于上面的多个if—else,他们到底怎么执行的呢?
可以简单记忆为,else 总是跟最接近的 if 匹配

关系操作符

c语言中用于比较的表达式,称为**“关系表达式”,里面运用的运算符自就叫做“关系运算符”**。
例:
• > ⼤于运算符
• < ⼩于运算符
• >= ⼤于等于运算符
• <= ⼩于等于运算符
• == 相等运算符
• != 不相等运算符
关系表达式通常返回 0 或 1 ,表⽰真假。

注意:相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,不要混淆。有时候,可能会不⼩⼼写出下⾯的代码,它可以运⾏,但很容易出现意料之外的结果。

if(x=3)
...

上⾯⽰例中,原意是 x == 3 ,但是不⼩⼼写成 x = 3 。这个式⼦表⽰对变量 x 赋值 3 ,它的返回值为 3 ,所以 if 判断总是为真。

另⼀个需要避免的错误是:多个关系运算符不宜连⽤

条件操作符

条件操作符也叫三目操作符,需要接受三个操作数。
形式如下:

exp1?exp2:exp3

条件操作符的计算逻辑是
如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果
如果 exp1 为假, exp3 计算,计算的结果是整个表达式的结果。

QwQ可以来简化 if—else

逻辑操作符:&&,||,!

逻辑运算符提供逻辑判断的功能,主要有下面三个运算符:
• ! :逻辑取反运算符(改变单个表达式的真假)。
• && :逻辑与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。
• || :逻辑或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。

提一嘴,c语言中,非0表示真,0为假。

逻辑取反运算符!

在这里插入图片描述

逻辑与运算符

在这里插入图片描述
&& 就是与运算符,也是并且的意思, && 是⼀个双⽬操作符,使⽤的⽅式是 a&&b , && 两边的表达式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。

逻辑或运算符

在这里插入图片描述
与&&相似,但是,||两边的表达式有一个真的就ok

短路

C语言中 逻辑运算符 有一个特点,总是先对左侧的表达式求值,再对右侧表达式求值。【目的是为了减小机器的运算量】
如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为**“短路”**。

比如:&&左边表达式不在条件内,右边的表达式就不用再求值。||也是一样的道理,左边表达式满足条件了,右边表达式就不用再去求值了。
像这种仅仅根据左操作数的结果就能知道整个表达式的结果不再对右操作数进⾏计算的运算称为短路求值

switch语句

switch 语句是⼀种特殊形式的 if…else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。

switch (expression) {
 case value1: statement
 case value2: statement
 default: statement
}

根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值,就执⾏ default 分⽀

注意:
• switch 后的 expression 必须是整形表达式
• case 后的值,必须是整形常量表达式
• case 和后边的数字之间必须有空格
• 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。如果不加,就会继续执行下面的case语句。【可把case想象成入口,break想象成出口】
• default 与 case,位置没固定要求,放在前面后面都可。
• break 也不是每个 case 语句都得有,得根据实际情况来。例如:

#include <stdio.h>
int main()
{
 int day = 0;
 scanf("%d", &day);
switch(day)
 {
 case 1case 2:
 case 3:
 case 4:
 case 5:
 printf("⼯作⽇\n");
 break;
 case 6:
 case 7:
 printf("休息⽇\n");
 break;
 }
 return 0;
 }

while循环

形式:

while(表达式)
	语句     //如果后面条件满足,会死循环执行语句

如果想包含更多的语句,可以加上{ }。

• 一个 break 只能跳出一个 switch

for循环

形式:

for(表达式1; 表达式2; 表达式3)
	语句;//如果循环体想包含更多的语句,可以加上⼤括号

表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整

do-while循环

break和continue语句

在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C语⾔中
提供了break与continue 两个关键字,就是应⽤到循环中的。

所以break 的作⽤就是永久的终⽌循环,只要break 被执⾏,break 外的第⼀层循环就终⽌了。那以后我们在循环中,想在某种条件下终⽌循环,则可以使⽤break 来完成我们想要的效果

continue 是继续的意思,在循环中的作⽤就是跳过本次循环中continue后面的代码,继续进行下⼀次循环的判断。

goto语句

#include <stdio.h>
 int main()
 {
 printf("hehe\n");
 goto next;
 printf("haha\n");
 next:
 printf("跳过了haha的打印\n");
 return 0;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值