C言語ノート:分岐ステートメント

コンテンツ

1.ifステートメント(注)

1.1 elseは、最も近い場合に一致します

2.switchステートメント

2.1switchステートメントの中断

2.2デフォルト句


1.ifステートメント(注)

1.1 elseは、最も近い場合に一致します

#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括弧内の2つの値が等しいかどうかを判断するときは、エラーが発生した場合のエラー修正を容易にするために、==の左側に定数を配置することをお勧めします

たとえば、(a == 4)の場合、(a = 4)の場合は簡単に記述できますが、プログラムは実行されるため、エラーを簡単に見つけることができます。また、if(4 = a)と書くと、コンパイラーはエラーを直接報告するので、間違いを書いたときにエラーの場所を見つけやすくなります。

そのような:

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

2.switchステートメント

switchステートメントは分岐ステートメントでもあります。多くの場合、複数のブランチの状況で使用されます。

注:スイッチの括弧は整数定数でなければなりません

2.1switchステートメントの中断

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を入力すると、「平日」が出力されます。

2. 6〜7を入力すると、「週末」を出力します。

したがって、コードを次のように変更します。

#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デフォルト句

switch式の値がすべてのケースラベルの値と一致しない場合、default句に続くステートメントが実行されます。

したがって、各switchステートメントに表示できるデフォルトの句は1つだけです。

ただし、ステートメントリストのどこにでも表示でき、ステートメントフローは、ケースラベルであるかのようにデフォルトの句を実行します。

良いプログラミング習慣

すべてのswitchステートメントにデフォルトの句を配置し、その後にブレークを追加することをお勧めします。

練習:

//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