• 【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语句后面的语句。

  • 相关阅读:
    LLM RAG系列
    【每日一题】分割数组
    计算机毕业设计ssm餐饮外卖系统v22fo系统+程序+源码+lw+远程部署
    Windows平台docker安装redis
    vue2.0/vue3.0 添加静态文件
    聊聊Mybatis的SqlSession
    [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
    安泰线束测试仪科普:影响线束电阻值的因素有哪些
    数据库操作查看用户名和端口,以及如何Mac 版本idea 如何实现JDBC和MySql建立连接,以及如何操作数据以及连接时出现的常见错误
    Mybatis杂谈
  • 原文地址:https://blog.csdn.net/Backlight__/article/details/126043608