c语言-分支和循环-学习记录
1. if和else
· if如果不加{}那么只能跟一条语句
如果要写多条语句,那么就在{}里面写,称作代码块,{}也可以使代码更加易于解读
· else总是跟最近的if配对
2. 关系操作符
C 语⾔⽤于⽐较的表达式,称为 “关系表达式”,里面使用的运算符就成为关系运算符。主要有如下几个
> , < , >= , <= , == , !=
· 关系表达式的返回值通常为0和1来表示真假。
· c语言中只有0表示假,所有的非零值都表示真
· 表达式通常用于if或while中
· 注意==和=的区别!不要混淆了
为了避免这种情况,有时出现了如下写法
对于==来说常量可以放前面,而如果使用=编译器则会报错
所以这个技巧可以学学哦~
· 需要注意另外一个情况,多个关系运算符不宜连用
如a<b<c这种写法!建议一定要改成a<b&&b<c!!
3. 条件操作符
也叫三目操作符
表达式1 ?表达式2 :表达式3
条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果exp1 为假, exp3 计算,计算的结果是整个表达式的结果。
可以理解为把一个if——else写成了一条语句~
4. 逻辑操作符
&&,||,!
!:逻辑取反,就是非一下(改变单个表达式的真假)
&&:与运算
||:或运算
· 注意初始化的问题,要养成这个好习惯!
局部变量未初始化,那么内部则是随机值
如果是全局变量未初始化,其内部则是0
· 注意短路的问题
C语言逻辑运算符有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。
如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。
对于这句 if(month >= 3 && month <= 5);
表达式中&& 的左操作数是 month >= 3 ,右操作数是 month <= 5 ,当左操作数 month >= 3 的 结果是0的时候,即使不判断 month <= 5 ,整个表达式的结果也是0。 所以,对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执行。
||同理
5. switch语句
如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执行,有可能执行其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。
所以在 switch 语句中 break 语句是非常重要的。
当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了。
比如输入数字1-7来输出“星期一”—“星期日”
则每条语句都需要break;
但如果输出改为“工作日”以及“休息日”
那么情况就有所变化了
所以应该根据实际的情况,来在代码中觉得是否使用 break ,或者在哪里使用 break ,才能正确完成实际的需求。
defult
如果 switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入 default 子句
另外,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,不过通常把 default 子句放在最后处理。
6. 循环语句
· while
注意三个点:初始化部分,判断部分,以及调整部分
当代码体量较大的时候,三个部分可能较为分散,千万不能忘了
· for
形如 for(表达式1; 表达式2; 表达式3)
表达式1 ⽤于循环变量的初始化,表达式2 ⽤于循环结束条件的判断,表达式3 ⽤于循环变量的调整
注意如果判断部分省略的话,就意味着判断条件恒成立!
· do-while
特殊的地方在于循环体至少会执行一次
break和continue语句
注意一下for和while中continue的区别
for里面读到continue的时候,i仍然会+1,但是while里面就不会了
· 就像if可以嵌套,循环也可以嵌套,while里面也可以放if,if里面也可以放for等等等等…
7. goto语句
C语⾔提供了⼀种特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。
例如:
goto语句容易使代码跳转来跳转去乱七八糟的就是,但是如果要跳出多重循环那就很方便。
建议:尽量少的使用goto语句
写样例的时候用到一个system函数,顺便介绍一下
system是一个库函数,可以执行系统命令
例如system(“shutdown -s -t 60”)相当于在命令行输入双引号中的命令,表示60秒后电脑关机
需要包含头文件stdlib.h