第三章 三大结构 | 分支结构

if语句

语句结构

if (condition1 || condition2) {
    // input the function
} else if (condition3 && condition4){
    // input the function
} else {
    // input the function
}

关系运算符

运算符名称
<小于
<=小于或等于
>大于
>=大于或等于
==等于
!=不等于
&&表示“and”

倘若我在condition的位置上变成赋值语句,那会怎么样。
当赋0时,返回假;当赋除0以外的其他值时,返回真。

注意
  1. 无论如何,都要写{},否则就会只运行if的下一行语句。
  2. else的归属权:如果没有{}else只与最靠近它的,且没有elseif匹配。不看对齐。

嵌套判断

就像下面这样的

if (condition_1) {
    if (condition_2) {
        // to do
    } else {
        // to do
    }
} else {
    // to do
}

意思就是无论if的判断如何,还得要再执行一个if,那么这就是嵌套
else总是和最近的if相匹配,缩进也不能暗示相匹配。
我们用翁凯老师的写的例子来说明

#include <stdio.h>
int main() {
    int gameover = 0,count = 10;
    if (gameover == 0)
        if ( count > 20)
             printf("player A win");
    else
        printf("player B win");
    return 0;
 }

我们认为gameover0,且count大于20的时候palyer A获胜。
但结果是
player B win
也就是说,else被当做是if ( count > 20)else
所以,无论如何,在ifelse的后面都要敲{}

级联判断

形如

if (condition1 || condition2) {
    // input the function
} else if (condition3 && condition4){
    // input the function
} else {
    // input the function
}

switch-case语句

语句结构

switch(表达式){
    case 常量表达式:
        语句1;
        break;
    case 常量表达式:
        语句2;
        break;
    default:    // default是在前面情况找不到任何的匹配之后才会运行
        语句;
        break;
}

如果不写break会怎么样,就像下面的代码

#include <stdio.h>
 int main() {
     for(int i=0;i<3;i++){
         switch (i) {
         case 1:
             printf("%d",i);
         case 2:
             printf("%d",i);
         default:
             printf("%d",i);
         }
     }
 }        

会返回011122

注意

  1. 如果不写break;,就会导致继续执行,不会跳出,而是会连续执行,如果有defult,则也会跑到defultcase只是一个“站牌”,竖起一个入口而已。
  2. 这个break;只能跳出switch-case
    switch-case的好处就是不用像if-elseif-else语句那样逐一判断。
posted on 2023-11-11 19:43  Mryan2005  阅读(4)  评论(0编辑  收藏  举报  来源