一.分支
1.1if语句语法形式
表达式成立为真,语句执行;表达式不成立为假,则语句不执行。(其中0为假,非0为真)
if语句的书写形式
当if语句为假时,else语句可以执行if语句的对立面。
当求出的结果需要框定范围时,可以采用嵌套式if语句,即在else情况中再进行细分。
若句子中存在多个if和else时,else总是和最近的if进行匹配
如图执行代码后,输出结果是:啥都不输出
为什么呢?
当a=0时第一条if语句不满足,此时不会执行第二条if语句了,会直接走到return上,其中的else语句是和第二个if语句相联系,也就是说第一条if语句是没有else情况输出的。
若希望将else语句与第一句if相对应可以加上{ }
使逻辑更清晰。
1.2关系操作符
<小于运算符 <=小于等于运算符
>大于运算符 >=大于等于运算符
==相等运算符 !=不相等运算符
注意:
相等运算符== 与赋值运算符=是不一样的运算符,为了防止错误可以将变量放在右边。
多个关系运算符不宜连用,例如:
i<j<k不是合法表达,应当写成i<j&&j<k
&&表示并且。
相关逻辑操作符还有:
! 逻辑取反运算符
&&表示并且(两侧表达式为真则为真,否则为假)
‖ 表示或者(两侧至少有一个表达式为真,则为真,否则为假)
1.3短路
C语言逻辑运算符的一个特点,它总是先对左边进行求值,再对右边求值。如果左边运算符满足逻辑运算条件就不再对右边进行求值,这种情况成为短路。
例如:
if(month== 12 ‖ month== 1 ‖ month==2)如果month等于1则不用判断month是否等于12或者2,整个表达式结果也是1
if(month>=3&&month<5)
如果month>=3结果为0时,则无需判断month<=5,整个结果都为0。
2.1Switch语句
switch语句是if else语句的特殊形式,可以把多重的if else语句改成更易用的形式
switch()括号中为整型表达式
根据表达式中不同的值执行不同的case分支,如果找不到相应的值,就执行default分支。
其中case后的值必须是整型常量表达式,case后边需要加空格,在每一句case后面需要加上break才能跳出语句。
二.循环
1.1while循环
while与if语句不同点在于,while语句可以实现循环效果而if不行。while语句的执行流程图
首先上来执行判断表达式,表达值为0则循环结束,表达值不为0则执行循环语句。
2.1for循环
for循环语法如下
for(表达式1;表达式2;表达式3)
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量调整
首先执行表达式1,接着执行表达式2判断,若判断为0则结束语句,若不为0则进入循环语句,然后进行调整后重新回到表达式2判断进行循环。整个过程中表达式1只执行1次,剩下是表达式2、3的循环。
2.2for循环与while循环对比
相较于while循环,for循环的三个部分更加集中。便于维护。
3.1goto语句
goto语句可以实现在同一个函数内跳转到设置好的标号处。可以快速跳出循环语句。
但如果使用不当,会导致在函数内部随意乱跳转,打乱程序的执行流程。
4.1do while循环
在循环中至少会执行一次,首先执行语句,若语句等于0那么循环结束,如果语句非0则进入判断表达进行循环。
5.1break与continue
continue在循环中的作用是跳过本次循环中continue后边的代码,继续执行下一次循环判断。
break是用来终止循环的