条件文(if、switch-case)


コントロールゲート


プログラムが条件に従って実行または実行する必要がない場合に使用します.
  • 選択文:if、switch~case
  • 複文:while,for,do~while
  • 四半期の記事:break、continue、goto、return
  • ドアが


    デフォルトのフォーマット


    条件式を満たすと文が実行され,満たさないと実行されずに通過する.
    if (a > 10) // 조건식
    {
       b = a;   // 실행문
    }
    ->aの値が10より大きい場合、bにaを加える.

    コードの簡単な作成方法


    カッコ
  • の使用
    文の実行文を括弧で囲むことを推奨しますが、実行文が文である場合は、括弧を削除できます.
    ただし、エラーを減らすためには、常にカッコを使用することをお勧めします.
  • インデント
    条件式と実行文を区別するためにインデントを書きます.
  • 例1)
    if (a > 10){
       b = a;
    }
    例2)
    if (a > 10)
       b = a;
    例3)
    if (a > 10) b = a;

    if~else文


    条件を満たさない場合でも、実行文を記述するために使用されます.(条件を満たす場合と満たさない場合を作成できます)
    if (a >= 0)   // 조건식
    {
       a = 1;      // 실행문1
    }
    else
    {
       a = -1;     // 실행문2
    }
    ->aが0以上の場合、1をa、0未満の場合-1に代入します.
    aが10の場合:実行文1実行、実行文2スキップa = 1
    aが-5の場合:実行文1をスキップし、文2を実行します.->a = -1

    elseは条件を使用しません。


    条件が満たされていない場合、else文は無条件に実行されるため、条件を別途記述する必要はありません.

    実行文が2つ以上の文を持つ場合は、カッコで囲む必要があります。


    ただし、実行文が文である場合、上記の基本if文のように括弧を省略することができます.
    if (a >= 0)
    {										// 실행문이 두 문장 이상이기 때문에 중괄호 사용
    	printf("현재 a의 값 : %d\n", a);		// 현재 a 값 출력 후
        a = 1;								// a를 1로 바꿈
    }
    else
    	a = -1;								// 실행문이 한 문장이기 때문에 중괄호 생략 가능

    if~else文は、if文を2回使用するよりも使用したほうがよい。


    if文を2回使用
    if (a >= 0){
       a = 1;
    }
    if (a < 0){
       a = -1;
    }
    if~else文の使用
    if (a >= 0){
       a = 1;
    }
    else{
       a = -1;
    }
    if文を使用しても同じ結果が得られますが、2番目のif文の条件式が間違っている場合は、両方の文が実行されるか、1つも実行されない可能性があります.
    また、条件式を2回チェックするため、else文を使用するよりも実行速度が遅い場合があります.
    したがって、2つの実行文のうちの1つを選択する場合はif~else文を用いることが望ましい.

    if~else if~else文


    3つ以上の実行文の1つを選択できます.
    ex)a値からb値が1、2、3の1の場合とする
  • aが0より大きい場合、bは124579182である.
  • aは0、bは
  • aが0未満の場合、bは324579182である.
    if (a > 0){			// 조건식1
    	b = 1;			// 실행문1
    }
    else if (a == 0){	// 조건식2
    	b = 2;			// 실행문2
    }
    else{
    	b = 3;			// 실행문3
    }
    条件を追加するには、elseにif~else文を連写します.

    条件を一つ一つチェックしているので、以前の条件の結果が反映されています。


    if~else if~else文を使用する場合は、条件式のチェック順序に注意してください.
    if (a >= 10){
    	b = 1;
    }
    else if (a >= 0){	// else if ((a < 10) && (a >= 0))
    	b = 2;
    }
    else{				// else if (a < 0)
    	b = 3;
    }
    注釈文のように書くことができますが、この場合は不要な条件チェックが追加されるので、条件式の順序を考慮して書くとともに、重複チェックを減らすことが望ましいです.
    ※参加可能な条件式を先に作成することで、検査条件式の回数を減らすことができます.

    ネスト条件の適用


    西京大学の学生のうち、単位が4.0以上であれば奨学金が支給されるという.この場合、まず西京大学の学生かどうかをチェックし、単位をチェックします.
  • if文重複使用
  • スイッチ~ボックスドア使用
  • if文重複


    ifドアにifドアを追加して使用します.
    if (서경대학교 학생이다){
    	if (학점 >= 4.0){
        	장학금 지급
        }
        else{
        	장학금 미지급
        }
    }
    上記のコードでは、if文の実行文はif~else文であるため、括弧を省略することができる.

    if文を重ねて使用する理由


    上記のコードがif文を重ならない連続if文で記述されている場合、
    if ((서경대학교 학생이다) && (학점 >= 4.0)){
    	장학금 지급
    }
    if ((서경대학교 학생이다) && (학점 < 4.0)){
    	장학금 미지급
    }
    論理積(&&)を使用して記述できます.論理乗算は2つの条件が満たされなければ真ではない.
    この場合、if文の条件式は常にチェックされますが、if文を重ねて使用すると、「西京大学の学生です」という条件が加わる場合にのみ、以下の条件が考慮されるため、不要な演算を減らすことができます.

    ※else結合問題


    重複文を使用する場合は、括弧は省略しないほうがいいです.
    if (a < 0){				// ㉠
    	if (b > 0){			// ㉡
        	printf("ok");
        }
    }
    else{
    	printf("ok");
    }
    上のコードでは、文法上の
    コンパイラはif文が重なるとelseを最近のifに関連付けます.
    したがって、カッコを省略するとelseは
    この場合、初期値がa=10、b=20の場合、何も出力されません.

    switch~case文


    等級別にボーナスを支給する.1位300万元、2位200万元、3位100万元、残りの支払いは1万元です.
    ここでの条件は等数,定数1,2,3である.
    switch~case文は、これらの定数から条件を選択して実行される.
    switch (rank)	// 조건식
    {
    case 1:			// 상수식1
    	m = 300;	// 실행문1
        break;
    case 2:			// 상수식2
    	m = 200;	// 실행문2
        break;
    case 3:			// 상수식3
    	m = 100;	// 실행문3
        break;
    default:
    	m = 1;		// 실행문4
        break;
    }
  • 条件式は整数式のみ、定数式は整数のみを使用します.
  • は基本的にケースにbreakを記入しています.
    ※breakに遭遇するとswitchゲートから出ます.
  • 省略


    breakはいつも使うわけではありません.必要に応じて省略できます.
    上記の式にbreakを作成しない場合、rank=1でcase 1、case 2、case 3、defaultが実行され、出力mの値が1を出力します.

    default


    条件式に一致するcase定数がない場合、または最後のcaseがbreakに遭遇しないまで実行します.
    不要な場合は省略できます.
    switchのどこにでも記入しますが、結果は同じですが、通常はすべての例文を記入してから最後に記入します.

    switch~case文をif文に置き換える

    if (rank == 1){
    	m = 300;
    }
    else if (rank == 2){
    	m = 200;
    }
    else if (rank == 3){
    	m = 100;
    }
    else {
    	m = 1;
    }
    出典)独学C言語