コンテンツ
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;
}