C语言笔记:分支语句

目录

1.if语句(注意事项)

1.1 else和离得最近的if匹配

2.switch语句

2.1 在switch语句中的 break

2.2 default子句


1.if语句(注意事项)

1.1 else和离得最近的if匹配

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}
//什么都不会显示,因为else是和与自己最近的if匹配
//注:该代码可能会让人误以为else与if(a == 1)匹配

修改后如下:

//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hehe\n");
       }
   }
    else
   {
         printf("haha\n");
   }       
    return 0;
}                                //haha

编程好习惯:

if括号中在判断两个值是否相等的时候,建议把常量放在==的左边,便于出错时纠错

如if(a == 4),很容易会写成if(a = 4),但程序依旧会执行,所以容易找不到错误。而当我们写成if(4 = a)时,编译器会直接报错,方便写错时更好的找到错误位置。

如:

#include <stdio.h>
int num = 1;
if(5 == num)
{
    printf("hehe\n");
}  //当错写为5 = num的时候,编译器会直接报错,方便我们找到错误的位置

2.switch语句

switch语句也是一种分支语句。 常常用于多分支的情况。

注:switch括号中必须是整型常量

2.1 在switch语句中的 break

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

如:

#include <stdio.h>
int main()
{
    int day = 0;
    switch(day)
   {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;    
        case 4:
            printf("星期四\n");
            break;    
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期天\n");    
            break;
   }
    return 0;
}

有时候我们的需求变了:

1. 当输入1-5时,输出的是“weekday”;

2. 当输入6-7时,输出“weekend”;

所以将代码修改为:

#include <stdio.h>
//switch代码演示
int main()
{
    int day = 0;
    switch(day)
   {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("weekday\n");
            break;
        case 6:
        case 7:
            printf("weekend\n");
            break;
   }
    return 0;
}

编程好习惯

在最后一个 case 语句的后面加上一条 break语句。

(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)

2.2 default子句

当 switch 表达式的值并不匹配所有 case 标签的值时,default 子句后面的语句就会执行。

所以,每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

编程好习惯

在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。

练习:

//m = ? n = ?
#include <stdio.h>
int main()
{
    int n = 1;
    int m = 2;
    switch (n)
   {
    case 1:
            m++;                   //m = 3
    case 2:
            n++;                   //n = 2
    case 3:
            switch (n)
           {//switch允许嵌套使用
             case 1:
                    n++;
             case 2:
                    m++;           //m = 4
                    n++;           //n = 3
                    break;
           }
    case 4:
            m++;                   //m = 5
            break;
    default:
            break;
   }
    printf("m = %d, n = %d\n", m, n);  //m = 5 n = 3
    return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_62934529/article/details/123143970