[エレメンタリーC言語]ステートメント、ブランチステートメント、ifステートメント、switchステートメント、コードブロック

1.ステートメントとは

文:C言語では、1つあります; 1つの文で区切られます。
例えば:

int a = 10;
printf("haha\n");
10;
'A';
 ; //空语句,啥都不执行

2.分岐ステートメント(構造を選択)

2.1ifステートメントと注意事項

ここに画像の説明を挿入

2.1.1文法構造

1if (表达式)
{
    
    
	代码块;
}2//二选一
if (表达式)
{
    
    
	代码块1;//表达式为真
}
else
{
    
    
	代码块2;//表达式为假
}3//多分支 多选一   
if (表达式1)
{
    
    
	代码块1;
}
else if (表达式2)
{
    
    
	代码块2;
}
else
{
    
    
	代码块3;
}

説明:
1。ステートメントが選択分岐ステートメントである場合、1つの条件が満たされている限り、他のステートメントは実行されません。
2. if()が()の式によって返される結果を判断した後。C言語では、0は偽であり、ゼロ以外は真です。
3.(flag = 6)のように誤記されないように条件を判断し、(6 == flag)のように書くことができます。
3. {}はコードブロックです。{}を使用してロジックを明確にし、完全なコードブロックであり、間違いを犯しにくいことを示してください。そうしないと、コンパイルが失敗したり、出力結果が間違ったりする可能性があります。例:
(1)コンパイルが失敗する
//エラー、コンパイルが失敗する

int main()
{
    
    
	if (a > 10)
		i++;
		j++;//error,编译不通过
	else
		j++;
	return 0;
}

//すべての{}を含む推奨される記述

int main()
{
    
    
	if (a > 10)
	{
    
    
		i++;
		j++
	}

	else
	{
    
    
		j++;
	}
	return 0;
}

(2)ダングリングelseの問題
//すべてを追加するのではなく、ダングリングelseがあります

int main()
{
    
    
	int a = 0;
	int b = 2;
	if (1 == a)
	if (2 == b)
		printf("hehe\n");
	else
		printf("haha\n");
	return 0;
}

出力:
ここに画像の説明を挿入
//推奨される書き込み、すべてを追加{}

int main()
{
    
    
	int a = 0;
	int b = 2;
	if (1 == a)
	{
    
    
		if (2 == b)
		{
    
    
			printf("hehe\n");
		}
	}
	else
	{
    
    
		printf("haha\n");
	}
	return 0;
}

出力:4。
ここに画像の説明を挿入
マルチブランチifステートメントの例:

int main()
{
    
    
	int age = 0;
	scanf("%d", &age);
	if (age<18)
	{
    
    
		printf("少年\n");
	}
	else if (age >= 18 && age<30)
	{
    
    
		printf("青年\n");
	}
	else if (age >= 30 && age<50)
	{
    
    
		printf("中年\n");
	
	}
	else if (age >= 50 && age<80)
	{
    
    
		printf("老年\n");
	}
	else
	{
    
    
		printf("长命百岁\n");
	}

	system("pause");
	return 0;
}

2.1.2ぶら下がり他

#include <stdio.h>
int main()
{
    
    
    int a = 1;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else//悬空else
        printf("haha\n");
    return 0; 
}
输出:hehe

注:
1。ここにあるelseは、ぶら下がっているelseです。
2. if elseステートメントがネストされている場合、elseは最も近いifに一致する最も近い原則を採用します。
3.コードを書くときは、{}を持ってきて、他にぶら下がりが発生しないようにしてください。これにより、出力結果が正しくなくなる可能性があります。例については、2.1.1(2)ぶら下がりelseの問題を参照してください。

2.2switchステートメントと注意が必要な事項

2.2.1文法構造

//switch语句是C语言中经典多分支语句
switch (整型表达式)
	{
    
    
	case 常量表达式1:
		语句;
	case 常量表达式2:
		语句;
		...
	case 常量表达式n:
	default:
		语句;
	}

説明:
1。switchステートメントは一致ジャンプです。ケースには判定機能のみがあり、分岐機能はありません。
ケースが一致する場合、一致した位置から開始して実行される位置にジャンプし
ます。caseステートメントは後で分岐できますブレークが追加されます。
1.整数式には、int、char、long long、short型、int a = 10; a> 10;(1 + 2);式などが含まれます。
2. 97、「7」などの定数式。

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

役割:switchステートメントのbreakステートメントは分岐を実現できます。
例:
(1)休憩なし

switch (3)
	{
    
    
	case 1:
		printf("星期一\n");
	case 2:
		printf("星期二\n");
	case 3:
		printf("星期三\n");
	case 4:
		printf("星期四\n");
	case 5:
		printf("星期五\n");
	case 6:
		printf("星期六\n");
	case 7:
		printf("星期天\n");

	}

出力:
ここに画像の説明を挿入
(2)休憩があります

switch (3)
	{
    
    
	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;
	}

出力:
ここに画像の説明を挿入
(3)需要の変化

int main()
{
    
    
	int day = 3;
	switch (day)
	{
    
    
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("weekday\n");
		break;
	case 6:
	case 7:
		printf("weekday\n");
		break;

	}
}

出力:
ここに画像の説明を挿入

2.2.3デフォルトステートメント

機能:式の値が大文字と小文字が一致しない場合、デフォルトのステートメントが実行されます。
説明:
1。デフォルトのステートメントは、caseステートメントが表示される任意の場所に表示できます。
2. switch後の式の値が大文字と小文字が一致しない場合、defaultステートメントが実行され、switchステートメントに表示できるデフォルトは1つだけです。
3. defaultステートメントは省略できますが、プログラミングの良い習慣として、caseステートメントにdefaultを追加し、その後にbreakを追加することができます。
デフォルトの位置の例について:
(1)最後に

int main()
{
    
    
	switch ('r')
	{
    
    
	case 'w':
		printf("工作日\n");
		break;
	case 'r':
		printf("休息日\n");
		break;
	case's':
		printf("加班日\n");
	default:
		printf("输入有误\n");
		break;
	}
	return 0;
}

出力:
ここに画像の説明を挿入
(2)真ん中
//一致する文の前

int main()
{
    
    
	switch ('r')
	{
    
    
	case 'w':
		printf("工作日\n");
		break;
	default:
		printf("输入有误\n");
		break;
	case 'r':
		printf("休息日\n");
		break;
	case's':
		printf("加班日\n");
	}
	return 0;
}

出力:
ここに画像の説明を挿入
//マッチングステートメントの後

int main()
{
    
    
	switch ('r')
	{
    
    
	case 'w':
		printf("工作日\n");
		break;
	case 'r':
		printf("休息日\n");
		break;
	default:
		printf("输入有误\n");
		break;
	case's':
		printf("加班日\n");

	}
	return 0;
}

出力:
ここに画像の説明を挿入
// caseステートメントに一致しません

int main()
{
    
    
	switch ('N')
	{
    
    
	case 'w':
		printf("工作日\n");
		break;
	default:
		printf("输入有误\n");
		break;
	case 'r':
		printf("休息日\n");
		break;
	case's':
		printf("加班日\n");
	}
	return 0;
}

出力:
ここに画像の説明を挿入

2.2.4switchステートメントのネスト

例:(結果を出力してみることができます)

int main()
{
    
    
  int n = 1;
  int m = 2;
  switch (n)
 {
    
    
  case 1:
      m++;
  case 2:
      n++;
  case 3:
      switch (n)
     {
    
    
      case 1:
          n++;
      case 2:
          m++;
          n++;
          break;
     }
  case 4:
      m++;
      break;
  default:
      break;
 }
  printf("m = %d, n = %d\n", m, n);
  return 0;
}

出力:
ここに画像の説明を挿入
説明:
1。switchステートメントはネストされた使用をサポートします。
2.現在のセットが使用されている場合、switchステートメントのブレークは最も近いswitchステートメントからジャンプします。

3.コードブロック

1. {}はコードブロックです。
2.コードブロックで定義された変数は一時変数と呼ばれ、関数も{}で囲まれているため、関数もコードブロックです。
3.コードで定義されているすべての変数はローカル変数と呼ばれ、このコードブロックでのみ有効です。
(1)エラー

int main()
{
    
    
	int flag = 6;
	if (6 == flag)
	{
    
    
		int x = 10;
	}
	printf("%d\n", x);
	return 0;
}

出力:
ここに画像の説明を挿入
(2)コンパイルに合格

int main()
{
    
    
	int flag = 6;
	if (6 == flag)
	{
    
    
		int x = 10;
		printf("%d\n", x);
	}
	int x = 20;
	printf("%d\n", x);
	return 0;
}

出力:
ここに画像の説明を挿入

最後に、ご覧いただき
ありがとうございます~~
記事の内容に問題がありましたら訂正してください!
一緒に来てください!

おすすめ

転載: blog.csdn.net/m0_46630468/article/details/110510476