分⽀和循环详解(上)

本文介绍了C语言中的分支与循环概念,包括顺序、选择(如if、switch)和循环(for、while、do-while)结构。同时详细讲解了关系和逻辑操作符,以及if、switch语句的使用和break关键字的作用。
摘要由CSDN通过智能技术生成

    本章我们就开始讲解分支与循环,可以说,分支与循环贯穿我们整个c语言的学习,因此本章的内容十分重要。

1.什么是分支与循环

其实很好理解,分支就如同树枝一样,一个主干有许多分支,而循环呢,顾名思义即使某个物体在特定条件下,来回重复执行任务,例如时间,每24小时重新开始。

而在c语言中则分为了三种结构:顺序结构、选择结构、循环结构

顺序结构:程序不经历分支与循环,一条一条执行。

选择结构: if 、 switch语句处理

循环结构:用for 、 while 、 do while语句处理

2.常见的操作符

在认识分支与循环前,我们先了解几种常见的操作符

1.关系操作符

C 语⾔⽤于 ⽐较 的表达式,称为 “关系表达式”。
主要有下⾯6个。
> ⼤于运算符
< ⼩于运算符
>= ⼤于等于运算符
<= ⼩于等于运算符
== 相等运算符
!= 不相等运算符
           关系表达式通常返回 0 1 ,表⽰真假。
C 语⾔中,0 表⽰假,所有⾮零值表⽰真 。⽐如, 20 > 12 返回 1 12 > 20 返回 0
注意:1.相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,不要混淆
           2.多个关系运算符不宜连⽤。
例如:  i < j < k
上⾯式⼦中, i < j 返回 0 1 ,所以最终是 0 1 与变量 k 进⾏⽐较。
如果想要判断变量 j 的值是否在 i k 之间,应该使⽤下⾯的写法。
            i < j && j < k(&&表示并且,下面会讲)

2.条件操作符

条件操作符也叫三⽬操作符,需要接受三个操作数的。

形式如下  exp1 ? exp2 : exp3

条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果
exp1 为假, exp3 计算, 计算的结果是整个表达式的结果

3.逻辑操作符:&& , || , !

1.  逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符。
     • ! :逻辑取反运算符(改变单个表达式的真假)。
&& :与运算符,就是并且
意思(两侧的表达式都为真,则为真,否则为假)。
|| :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。
注:C语⾔中,⾮0表⽰真,0表⽰假

2.短路

     C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。
      如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。
有以下代码
    month >= 3 && month <= 5
    表达式中&& 的左操作数是 month >= 3 ,右操作数是 month <= 5 ,当左操作数 month >= 3
结果是0的时候,即使不判断 month <= 5 ,整个表达式的结果也是0。
所以,对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执⾏。
|| 操作符的左操作数的结果不为0时,就⽆需执⾏右操作数。

3.if语句

1.语法

     if ( 表达式 )

          语句

表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏
在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果不是0,则语句执⾏。

2.else

else是与if搭配来使用的,else表示为其余

语法:

if ( 表达式 )
语句 1
else
语句 2
默认在 if 和 else 语句中默认都只控制⼀条语句
上⾯的代码,你会发现输⼊的值不管是>=18 还是<18,"可以谈恋爱了" 都会打印在屏幕上。
这是因为 if 语句只能控制⼀条语句,就是 printf(" 成年了 \n"); ,if语句为真,则打印成年了,
if语句为假,则不打印,对于 printf(" 可以谈恋爱了 \n"); 是独⽴存在的,不管if语句的条件的真
假,都会被执⾏。那如果我们要if语句同时控制2条语句,怎么办呢?那就要使⽤ {} 将代码括起来, else 后也可以跟上⼤括号

3.if嵌套

if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断
上图中蓝⾊背景的代码就是嵌套在前⾯的 else ⼦句中的,构成了嵌套的if语句。
还有一种嵌套方法

4.悬空else问题

看下面这个例子

为什么什么都不打印

这就是悬空 else 的问题,如果有多个 if else ,可以记住这样⼀条规则, else 总是跟最接近
的 if 匹配。
上⾯的代码排版,让 else 和第⼀个 if 语句对⻬,让我们以为 else 是和第⼀个if匹配的,当 if
语句不成⽴的时候,⾃然想到的就是执⾏ else ⼦句,打印 haha ,但实际上 else 是和第⼆个 if
进⾏匹配的,这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不
成⽴,嵌套 if else 就没机会执⾏了,最终啥都不打印。
上述的代码可以转为下面这样
或者如果我们希望else确实和第⼀个if匹配,可以这样修改代码:

4.switch 语句

1.语法

除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。
switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重
else if 改成更易⽤、可读性更好的形式。
语法如下:
switch (expression) {
     case value1: statement
     case value2: statement
     default : statement
}
上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值,
就执⾏ default 分⽀。
注:
switch 后的 expression 必须是整型表达式
case 后的值,必须是整形常量表达式
大家虽然可能还不知道怎么用,下面有个例子
可能会有人问break是啥,为什么语法中没有,下面为大家讲解

2.switch中的break

前⾯的代码中,如果我们去掉case语句中的break,会出现什么情况呢?
我们发现没有break的话程序会一直往下执行,直到遇到break停下
只有在 switch 语句中使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续往下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。
  那有人肯定会说我只要用到switch语句每有case,后面就加上break不就行了,这个是不对的
我们看下面的代码
我们发现应该根据实际的情况,来在代码中觉得是否使⽤ break ,或者在哪⾥使⽤
break ,才能正确完成实际的需求。

3.switch语句中的case和default的顺序问题

switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实
际需求的就可以。
不过我们通常是把 default ⼦句放在最后处理的。

5.结语

 本章的内容结束了,我们认识了分支的结构和处理,到现在我们就可以写一些有趣的代码了,不过我们的学习之路仍未完成,继续加油吧,少男少女哟

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值