C言語の基本的な理解:if文とswitch文の構造

目次

一 .if

次の図は、else if の具体的なアプリケーションを示しています。

二.switch

1. 構造文法の選択

2. 以下は具体例です

3. #include<> と "" の違い (学習過程で見つかった問題、補う)

1. ファイル main.cppEdit のみを含む新しいプロジェクト xx を作成します。

2. ヘッダー ファイル stdio.h を xx プロジェクトに追加し、#include "stdio.h" を使用します。

3. #include を stdio.h ファイルに追加します。


C言語の表現文型は大きく次の5つがあります。

1 式ステートメント 2 関数呼び出しステートメント 3 制御ステートメント 4 複合ステートメント 5 空のステートメント

今回は制御文内のループ分岐文のifスイッチとして記述します。  

一 .if

1.if (真の場合)

ステートメントを実行します。

2.場合(18歳未満)

          printf("未成年者"); 

   それ以外

          printf("アダルト");                      

3. 複数の条件がある場合は、else if を使用できます。

次の図は、else if の具体的なアプリケーションを示しています。

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
int main()
	int grad = 65;

	if (grad >= 90)
    {                                     //成绩大于等于90的为非常优秀 
		printf("%s", "非常优秀");         //在大于等于60且小于90为优秀
	}
	else if(grad >= 60 && grad < 90) //这里不能写成60<=grad<90,因为若grad=20,则会出现0<90
//命题为真则还会打印优秀,所以不能写成这种形式(下图有解释)
	{
		printf("%s", "优秀");
	}

二.switch

1. 構造文法の選択

スイッチ選択構造の
        構文構造:
            switch(expression) {              case 定数 1:                  コード ブロック 1;                 ブレーク;               case 定数 2:                コード ブロック 2;                ブレーク;                ......                case 定数 n:                コード ブロック n;                 ブレーク;                デフォルト:                  コードブロック m;                   ブレーク;              }













2. 以下は具体例です

#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS 
int n = 1;
    int m = 2;
	switch (n)
	{
	case 1:m++;
	case 2:n++;
	case 3:
		switch (n)
		{            //swich可嵌套使用
		case 1:n++;
		case 2:m++; n++;
		    break;
		}
	case 4:
		m++;
		break;
	default:
	    break;
	}
	printf("%d %d",m,n);   //最后输出结果为5  3
	return 0;
}                                            //执行规律:
   根据switch中()里表达式的值,来匹配case后面的常量值,匹配上哪一个常量值,就执行对应的代码块,执行完代码块后。
 执行break,退出整个switch选择结构,如果表达式的值与所有的case常量值都不匹配,则执行default语句中的代码块,然后执行break结束整个switch选择结构。

注意:
       1)表达式的值可以是int、short、byte、char、枚举类型、String
       2)case常量值不能重复,后面只能是字面 量,不能是自变量。
       3)break的作用是结束整个switch结构,如果省略了,代码会继续向下执行,知道遇到break,或者执行到了default语句后结束整个switch选择结构
这个现象称之为“case穿透”,这个case穿透可以合理使用。
       4)default语句是在表达式的与所有的case常量值不匹配的时候执行,可以省略。
default语句可以写在switch选择结构中的任意位置,一般写在switch选择结构的末尾。

3. #include<> と "" の違い(学習過程で見つかった問題、補う)


C 言語でヘッダファイルを記述する方法には、#include <stdio.h> と #include "stdio" (#include の後にスペースを入れない) の 2 つの方法があり、2 つの方法の違いは次のとおりです。

#include <ヘッダー ファイル> :コンパイラーは、システムによって構成されたライブラリ環境からヘッダー ファイルのみを検索し、現在のフォルダーは検索しません。通常、標準ライブラリのヘッダー ファイルを参照するために使用されます。
#include "ヘッダー ファイル" : コンパイラーはまず現在のフォルダーからヘッダー ファイルを探します。見つからない場合は、システムのデフォルトのライブラリ環境に移動して見つけます。通常、ユーザー自身が定義したヘッダー ファイルを参照するために使用されます。

1. main.cpp ファイルのみを含む新しいプロジェクト xx を作成します。

 #include "stdio.h" と #include<stdio.h> プログラムの両方が正常に実行できることがわかります。

分析: 1) #include<stdio.h> を使用してヘッダー ファイルを追加する場合、コンパイラは標準ライブラリ ヘッダー ファイルを検索し、stdio.h ヘッダー ファイルを見つけて、それを現在の行にコピーします。2) #include " を使用します。 stdio.h" ヘッダー ファイルを追加する場合、コンパイラはまず現在のプロジェクトが存在するフォルダーで stdio.h ヘッダー ファイルを検索しますが、そのようなヘッダー ファイルが存在しないことが判明したため、コンパイラは stdio.h を検索します。システムのデフォルトのライブラリ環境でヘッダー ファイルを検索し、stdio.h ヘッダー ファイルを見つけて、それを現在のライブラリにコピーします。

2. ヘッダー ファイル stdio.h を xx プロジェクトに追加し、#include "stdio.h" を使用します。

printf が宣言されていないため、コンパイラはエラーを報告します。

分析: #include "stdio.h" を使用してヘッダー ファイルを追加する場合、コンパイラーはまず現在のプロジェクトが存在するフォルダーで stdio.h ヘッダー ファイルを検索し、ユーザー定義の stdio.h ヘッダー ファイルを見つけます。したがって、コンパイラはそれを現在の行にコピーします。ここで展開されるヘッダーファイルはユーザー定義のヘッダーファイルですが、ユーザー定義の stdio.h ヘッダーファイルでは printf 関数が宣言されていないため、当然エラーが報告されます。


3. #include<stdio.h> を stdio.h ファイルに追加します。

プログラムは正常に実行されます。 


#ifndef、#define、#endif: の役割に注意して、ヘッダー ファイルが繰り返し引用され、繰り返しコンパイルされるのを防ぎます。

(クリックすると詳細が表示されます)

#ifndef これは、マクロ定義の一種、正確には 3 つの前処理機能 (マクロ定義、ファイルのインクルード、条件付きコンパイル) の 1 つである条件付きコンパイルの 1 つである if not define の略語です。

#ifndef を使用すると、次のエラーを回避できます。 グローバル変数が .h ファイルで定義されており、C ファイルに .h ファイルが複数回含まれている場合、#ifndef マクロ定義が追加されていないと、変数定義エラーが繰り返し表示されます。 if # ifndef ではこのエラーは発生しません。
 

おすすめ

転載: blog.csdn.net/fcccfffg/article/details/132086510