一.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后一定要加上去的,依照情况而定,如下图:
=========================================================================================================================
-----各位,多多支持一下