C语言之选择结构

一.if语句

1.形式:

if(表达式)
    语句

表达式若为真,则执行语句;表达式若为假,则不执行语句。

c语言中0表示假,非0表示真,而我们常常用1表示真。

注意:1.if语句后默认执行一条语句,要执行多条语句的话可以加上{}

           2.if()括号里的表达式是要被执行的


如图:首先a+b的值赋值给c,c==3,为真,执行if里的语句


2.if与else搭配(若不满足if中的条件,则执行else)


3.嵌套if

        if里面嵌套

        else里嵌套

        还可以这样写,也相当于else里嵌套

4.悬空else(else总是跟最近的if匹配)

        如下:

可以看到图中else是与第一个if (a == 1)匹配的,图中a给的值是0,那就执行else里面的语句,打印出me   

而结果是什么都没有,这是为什么?

这里就要讲到悬空else,它跟最近的if匹配,也就是图中第二个if,实际上如下图:

所以写代码的格式很重要,一定要重视起来。

二.关系操作符(常见的有:>  <  >=  <=  ==  !=)

1.常见错误:if(i == 3) 写成if(i = 3)  若是写成这样,编译器不会识别出来,而我们写成 if(3 = i) 的时候编译器就会报错(这里我用的是vs2022)

2.关系表达式的结果通常返回0或1

3.关系表达式不能连用

我们想要表达a小于b并且b小于c,而图中是错误的,我们应该这样写 a < b && b < c

解析一下图中的错误:两个都是 < 符号,优先级相同,从左往右计算。首先 a < b 成立,返回1;然后 1 < c 成立,为真,执行if语句

三.条件操作符

ex1 ? ex2 : ex3

计算逻辑:若ex1为真,计算ex2;若ex1为假,计算ex3  (就相当于一个简写版的if else语句)

四.逻辑操作符

1.逻辑与操作符(&&):并且的意思,有假则为假,它是一个双目操作符

2.逻辑或操作符(||):或者的意思,有真则为真,它也是一个双目操作符

3.逻辑取反操作符(!):改变真假

4.短路:若左边表达式满足逻辑运算符的条件,则不再对右边表达式求值

-----逻辑运算符总是先对左边表达式求值,再对右边表达式求值。

        4.1  &&中的短路:若左边操作是结果是0的时候,则不再执行右边操作数

a++是后置++,先使用再加1,那么a++的结果就是0,发生短路不再对++b执行,所以左半部分(a++ && ++b)为假,左半部分相当与第二个&&的左操作数,左操作数的结果为0,发生短路不再对d++执行        整个表达式为假,返回0给i

=========================================================================================================================

这里我们将a的值改为1

a++结果为1,还要执行右边的++b,所以左半部分为真,第二个&&的左操作数的结果为1,要执行d++     整个表达式为真,返回1给i

=========================================================================================================================

这里我们再将b的值改为-1

a++结果为1,要执行右边的++b,而++b的值为0,所以左半部分为假,第二个&&的左操作数的结果为0,不执行d++   整个表达式为假,返回0给i

=========================================================================================================================

        4.2  ||中的短路,若左操作数的结果为1时,则不再执行右边操作数

a++的结果为0,还要执行右边的++b,++b的结果为3,所以左半部分为真,第二个||的左操作数的结果为1,不再执行d++

=========================================================================================================================

这里我们将b的值改为-1

a++结果为0,要执行++b,而++b的结果为0,所以左半部分为假,第二个||的左操作数的结果为0,还要执行d++

五.switch(适用于条件有多个结果的情况)

switch(表达式1)
{
    case value1:
    case value2:
    ..........
    default:
}

1.这里注意一下:表达式1只能为整型表达式

                             value只能为整型常量表达式

                             case 与value之间有一个空格

这里我们来计算一下除3之后的余数

可以看到它并没有打印出我们想要的效果(余数是1)

这里我们就需要加上break来实现,首先 7 % 3 的余数是1,从case 1: 进入并执行printf,而没有break的话它还会继续往后运行,如下图:

但是呢break不是每个case后一定要加上去的,依照情况而定,如下图:

=========================================================================================================================

-----各位,多多支持一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值