目录
导语
在C语言编程中,我们需要根据我们所设定的条件去控制C语言的运行,为了解决多种多样的现实问题,本文将介绍C语言的两种控制语句:分支与循环。分支语句主要介绍if,switch等,循环语句主要介绍for,while,do while等。同时,为了更好的处理的细节问题,本文还会介绍条件判断运算符,逻辑运算符,break,continue语句,goto语句等。
一、分支语句
1、与if相关的分支语句
1.1、if语句
if语句的基本结构如上,括号内放入判断条件用于判断情况是否符合条件,是则为真,进入if语句,执行大括号内的语句。否则为假,跳过if语句,继续执行后续的语句。
1.2、if else语句
如果判断条件为非A即B,我们则可以用到else。
基本构成如上,因为else语句的判断条件已经确定为非a,则不需要在else后加()放入判断条件。
执行程序时,我们会先进入if语句的判断,如果符合则进入if内执行if内的语句,否则进入else语句执行里面的代码。
1.3、多重选择类1——else if
如果有很多种情况,我们就需要用到多重选择else if 语句。
基本构成如上,我们可以在添加的else if的括号内加入其他几种判断条件,最后的else语句根据自己的要求添加,可以没有。执行过程为先执行条件为a的语句,符合则进入,不符合则跳至下一条else if语句,直至执行完所有分支语句。
1.4、多层嵌套的if语句
在实际情况中,我们在各类大情况下会细分小的情况,这个时候我们就需要在if语句中嵌套if,else if语句。
基本结构如上,执行时会先进入条件a的if语句,再进入内部的分支语句,执行过程和以上各类情况一致。
1.5、else与if的配对问题
如果出现多个if语句和多个else语句,我们怎么确定哪个if和哪个else配对呢?
下面我们来看一种代码风格差造成的问题。
如果if语句大括号内只有一条语句,则可以不加大括号,如果该语句为if语句,紧接着一个else语句,就会出现问题。因为编写者下意识的省略,导致本该与if(条件a)配对的else变成了与if(条件b)配对。所以我们应该养成良好的代码风格,不要刻意追求某些便捷。
由上可见,配对规则为:如果没有花括号,else会与离它最近的if匹配,除非if语句被嵌套在其他语句内且被花括号包含(如上图if(条件c)语句)。
2、与switch相关的分支语句
2.1、多重选择类2——switch语句
在上文中我们学习了运用else if语句来完成多种情况,但是,大多数情况下我们使用switch语句会更加方便
基本结构如上,switch括号内一般输入如整形数字,字符等作为标签,程序会用c标签与case 条件1,2,3...进行匹配,如果有相同,则会执行case k冒号后的语句。如果匹配完没有找到相同的标签,则会跳至default语句(其功能与else类似),用于执行剩余的情况,和else一样可以不需要。
2.2、break语句
有时我们只需要满足一种条件即可,不需要执行其他符合条件的情况。这个时候就需要用到break。
如果条件2与标签匹配,则执行语句2,语句2执行完后执行break语句,break的执行原理为跳出之后的switch判断,跳过之后的case3...case n,即直接跳出switch语句,执行语句5。但是如果case条件2 没有break语句,则会继续进行标签匹配,执行符合条件的case语句。
3.逻辑运算符
3.1、3种逻辑运算符(&&,||,!)
&&代表与,||代表或,!代表非。
eg:a>b&&b>c, 条件1&&条件2只有在两条件都为真时才成立。
eg:a>b||b>c, 条件1||条件2,只需要两个条件满足其一即可成立。
eg:a>b为真,则!(a>b)为假,我们所用的不等于号就是!=。
优先级:!的优先级仅次于圆括号,&&的优先级高于||,但都比关系运算符(>,<,=)低,高于赋值运算符。
3.2、范围的写法
在数学上,我们经常写成a<b<c,但是在C语言中,我们需要用到&&符号。
如a<b<c则写成(a<b&&b<c)才正确。abc可以为数字,可以为字符,如判断是否为小写字母可以写成(c>='a'&&c<='z')才对。
4.条件运算符
4.1、三目运算符——( ?:)
当我们遇到二选一问题时,我们可以用if和else语句做出选择,我们也可以用三目运算符,从而有效减少代码量。使代码更简洁美观。
如下两种写法:
在三目运算符中,先判断实际情况是否符合条件,如果是,则为真,执行表达式1,否则为假,执行表达式2。如果情况较为简单,如取a,b两数较大值我们可以写成 c=(a>b)?a:b ,用三目运算符可以简化代码。
5.goto语句
goto语句有两个部分,goto和标签名。
基本形式为: lable1:语句....;
goto lable1;
通过在目标语句贴上标签,再用goto回到lable标记的语句。原则上是不在C语言中使用goto语句,因为标签变多时会导致标签错乱,使系统变混乱。C语言通常使用break和continue语句来代替goto语句。下一篇文章将介绍continue以及break语句在循环结构中的运用。
分支与循环(一)的分支部分就先到这里,下一篇分支与循环(二)会讲解循环语句。
希望这篇文章对你有帮助。第一次写博客,如有错误或者不足,望指出,感谢各位的浏览。