目次
次の図は、else if の具体的なアプリケーションを示しています。
3. #include<> と "" の違い (学習過程で見つかった問題、補う)
1. ファイル main.cppEdit のみを含む新しいプロジェクト xx を作成します。
2. ヘッダー ファイル stdio.h を xx プロジェクトに追加し、#include "stdio.h" を使用します。
3. #include を stdio.h ファイルに追加します。
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 ではこのエラーは発生しません。