接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧
前言:
c语言中一些关于分支循环中continue常混淆,悬空esle问题,短路表达式,static ,extern在使用时稍不注意就会出错的点,接下来我们将介绍这些易错的内容
一:深入理解分支语句
1.对于分支语句有很多结构
如if() else语句,if() else if () esle if () else 语句,还有if语句中嵌套if else 语句的,对于这些语句要注意使用时的条件是否合理
2.对比两种结构 if() if() 和 if() else if() else 使用时的不同
3.举例:计算1~100之间出现的9的个数
对于上面两种计算方式,会发现会有差别,出现这种的原因为if() if()在运行时每个数都会执行,而对于if() else if() 在运行中只会选择运行一个,在99时只算了一个9,导致结果出错 ,所以使用需要注意这一点
二:悬空else问题
1.举例
2.结果分析
运行得知,此程序执行结果为无,好像程序中是打印haha,但else只有一个,有两个if结构,此时就会出现匹配问题
3.悬空else处理规则
else总是与最近未匹配的if结构匹配
所以上面例子就是判断a==1时,条件不成立,因为无匹配的else结构,程序啥也不输出
三:短路表达式
1.&&逻辑与的短路(左为假,右不再执行)
int a=0,b=3,c=4;
a++&& b++ && c++;
printf("%d,%d,%d",a,b,c);
对于这个表达式,由于是a++,a先使用后++,所以a++的结果为0,此时逻辑与&& 发生短路,后面的b++,c++不再执行,所以结果为1,3,4
2.||逻辑或的短路(左为真,右不再执行)
int a=1,b=2,c=3;
a++ || b++ ||c++;
printf("%d,%d,%d",a,b,c);
此程序的运行结果为2,2,3
四:三种循环结构中的break,continue语句
1.break语句
break语句在三种循环结构中一致,都是用来终止程序的,跳出循环
2.while ,do while 语句与for语句中continue的不同
continue的作用是跳过本次循环后面的语句,直接到判断部分(while do while)或者调整部分
会发现对于while循环跳过continue后面的语句,就会造成死循环,原因是当i==5时,continue跳过后面语句,直接到判断部分,导致i++未执行,i一直为5,造成死循环
五:static 和extern
1.static
static是静态的意思,可以修饰函数,局部变量,全局变量