c语言中的易错点

本文详细解析了C语言中if-else、多条语句的控制、悬空else问题、逻辑运算符的短路现象、switch语句的break和continue以及do-while的使用规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1循环和分支语句

a.分支中的多条语句问题


 在C语言中,默认在if和else语句中默认都只控制一条语句,若控制多条语句,则需要加上大括号,以保持该语句在if或else的控制范围内。

原本我们是希望成绩大于六十,才能通过考试。但因为if只能控制一条语句的原因,所以不管成绩大不大于60,第二个printf都会执行,所以解决该种问题我们用上大括号就行。

b.悬空else问题

 如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。比如在下面该图片中,

可能有小伙伴看到else是和第一个if对齐,就觉得和它是一起的,但是我们看看该程序的运行结果,竟然什么都没有输出。那该如何解释呢?如果是和第一个if匹配的话,那么是不是应该输出hehe。如果是和第二个if匹配的话,是不是什么就都不会输出。

c.逻辑运算符的短路问题

C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。

对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执⾏。

 对于|| 操作符来说,左操作数的结果不为0时,就⽆需执⾏右操作数。

下面举一例子,相信友友们会更好的理解短路问题

第一个if中的a++结果为0(在执行这个的过程中,也完成了a+1的计算,所以&&右边不执行,所以第一个if不执行。接下来我们看第二个if语句,因为a在前面已经加了1,所以执行第二个if语句中的++a时,++a的结果为2(所以a也为2),再执行b++,所以b为2。接下来我们来看第三个if语句,a++结果为2(a同时加1,变为3),不为0,则右边不需要再执行,所以b仍为2。最后一个仍然像前面这样推理。

 d.switch语句中的break和continue

1.case 和后边的数字之间必须有空格
 2.每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。不加上break的话,就会把该条case语句执行完后也执行它下面的case或default语句。

3。switch 后的 expression 必须是整型表达式,case 后的值,必须是整形常量表达式。

4.break和continue只在循环和分支语句中出现

在该段截图中,因为a为1,所以执行case1,又因case1后无break语句,所以继续向下执行。case2后有break语句,所以停了下来。

e.do-while的使用 

do-while中的循环体至少执行一次,这种的使用场景比较少。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值