• 【C语言学习笔记(六)】分支与跳转(if、else、continue、break、switch)


    一、if语句

    if语句被称为分支语句或选择语句,因为它相当于一个交叉点,程序要在两条分支中选择一条执行。if语句的通用形式如下:

    if(expression)
    	statement
    
    • 1
    • 2

    如果对expression求值为真(非0),则执行statement;否则,跳过statement。
    if语句的结构和while语句很相似,他们的主要区别在于:如果满足条件可执行的话,if语句只能测试和执行一次,二while语句可以测试和执行很多次。
    除了if语句还有if…else语句,if语句用于选择是否执行一个行为,if…else语句用于在两个行为之间选择。

    二、逻辑运算符(&&、||、!)和条件运算符(?:)

    在if语句和while语句中通常会使用关系表达式作为测试条件,有时候会把多个关系表达式组合起来使用,此时就需要用到逻辑运算符。有3种逻辑运算符,其分别是&&(与)、||(或)、!(非)。对于与运算,只有当运算符两侧的关系表达式都为真时,整个运算结果才为真;对于或运算,只有当运算符两侧的关系表达式都为假时,整个运算结果才为假。在这三个运算中,!运算符的优先级最高,&&运算符次之,||运算符优先级最低。
    条件运算符?:可以作为表达if…else语句的一种便捷方式。该运算符分为两部分,需要3个运算对象,是C语言中唯一一个的三元运算符。条件表达式的通用形式如下:

    expression1 ? expression2 :expression3
    
    • 1

    如果expression1为真(非0),那么整个表达式的值与expression2的值相同;如果expression1为假(0),那么整个条件表达式的值与expression3的值相同。
    需要把两个值中的一个值赋给变量时,就可以用条件表达式。例,把两个值中最大值赋值给变量:

    max = (a > b)?a:b;	//如果a大于b,那么将max设置为a;否则,设置为b
    
    • 1

    三、循环辅助:continue和break

    一般而言,程序进入循环后,在下一次循环测试之前会执行完循环体中的所有语句。continue和break语句可以根据循环体中的测试结果来忽略一部分循环内容,甚至结束循环。

    1. continue语句
      3种循环(while、for、do…while)都可以使用continue语句。执行到该语句时,会跳过本次迭代的剩余部分,并开始下一轮迭代。如果continue语句在嵌套循环内,则只会影响包含该语句的内层循环。continue语句让程序跳过循环体的余下部分,那么,从何处开始呢?对于while和do while循环,执行continue语句后的下一个行为是对循环的测试表达式求值;对于for循环,执行continue后的下一个行为是对更新表达式求值,然后是对循环测试表达式求值。
    2. break语句
      程序执行到循环中的break语句时,会终止包含它的循环,并继续执行下一阶段。简单理解就是当在循环中遇到break语句,直接退出当前的循环,执行循环体后面的程序。

    break语句可以用于循环和switch语句中,但是continue只能用于循环中。如果switch语句在一个循环中,continue便可作为switch语句的一个部分。在此情况下,就像其他循环中一样,continue让程序跳出循环剩余部分,包括switch语句的其他部分。

    四、switch语句

    switch语句可以在一系列以整数作为标签的语句中进行选择。要对紧跟在关键字switch后圆括号中的表达式求值,如果紧跟在switch关键字后的测试条件的整数值与某标签匹配,程序就转至执行匹配的标签语句,然后在遇到break之前,继续执行标签语句后面的语句。如果没有break语句,就会从匹配标签开始执行到switch末尾。如下是switch语句的形式:

    switch(expression)
    {
    	case label1 : statement1	//使用break跳出switch
    	case label2 : statement2
    	default     : statement3		
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注解:程序根据expression的值跳转至相应的case标签处。然后,执行剩下的所有语句,除非执行到break语句进行重定向。expression和case标签必须是整数值(包括char类型),标签必须是常亮或完全由常量组成的表达式,不能用变量作为case标签。如果没有case标签与expression的值匹配,控制则转至标有default的语句(如果有的话);否则,将转至执行紧跟在switch语句后面的语句。

  • 相关阅读:
    nodejs+vue养老人员活体鉴权服务系统elementui
    [Qt开发]当我们在开发兼容高分辨率和高缩放比、高DPI屏幕的软件时,我们在谈论什么。
    【云原生 | Kubernetes 系列】K8s 实战 Kubernetes 声明式对象的 增 删 改 查
    学习笔记(css穿透、vue-cookie、拦截器、vuex、导航守卫、token/Cookie、正则校验)
    Vue.js+SpringBoot开发个人健康管理系统
    Vue2:Vue2 @vue/cli脚手架
    linux C MD5计算
    Apollo规划代码ros移植-动态障碍物处理(一)
    秋招还没Offer怎么办?
    QT:qss语句&资源文件
  • 原文地址:https://blog.csdn.net/Backlight__/article/details/126043608