산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 조건문 마스터: IF, IF-ELSE, 중첩 IF-ELSE 완전 정복

C 언어 조건문(Conditional Statement)이란?

C 조건문은 조건에 따라 결정을 내리는 데 사용됩니다. 조건이 없는 문장들은 순차적으로 실행되지만, 문장 블록에 조건을 걸면 조건 평가 결과에 따라 실행 흐름이 바뀔 수 있습니다. 이 과정을 C에서 '의사 결정(decision making)'이라고 합니다.

C 프로그래밍에서 조건문은 다음 두 구조로 가능합니다:

1. If 문

2. If-else 문

프로그램이 평가된 조건 결과에 따라 어떤 문장을 실행할지 결정하므로 '분기(branching)'라고도 부릅니다.

이 튜토리얼에서 배울 내용:

If 문

프로그램 실행 흐름을 수정하는 강력한 조건문입니다. If 문은 항상 조건과 함께 사용됩니다. 조건이 먼저 평가되고, If 본문 안의 문장이 실행됩니다. 문법:

if (condition) instruction;

조건은 true(참) 또는 false(거짓)로 평가됩니다. True는 0이 아닌 값, false는 0을 포함하는 값입니다. 명령문은 단일 명령이거나 중괄호 { }로 감싼 코드 블록일 수 있습니다.

다음 프로그램은 C에서 if 구조 사용을 보여줍니다:

#include<stdio.h>
int main() {
    int num1=1;
    int num2=2;
    if(num1<num2) // 테스트 조건
    {
        printf("num1 is smaller than num2");
    }
    return 0;
}

출력:

num1 is smaller than num2

위 프로그램은 두 숫자의 동등성 확인을 위한 if 구조 사용을 보여줍니다.

C 조건문 마스터: IF, IF-ELSE, 중첩 IF-ELSE 완전 정복

  1. 위 프로그램에서 num1, num2 두 변수를 1, 2로 초기화했습니다.
  2. if에 테스트 표현식을 사용하여 어느 숫자가 더 작은지, 더 큰지 확인했습니다. 관계 표현식을 if 구조에 사용했습니다. num1 값이 num2보다 작으므로 조건은 true로 평가됩니다.
  3. 따라서 If 블록 안의 문장이 출력됩니다. 이후 제어는 블록 밖으로 나가고 프로그램은 성공적으로 종료됩니다.

관계 연산자(Relational Operators)

C에는 불리언 표현식을 구성하여 의사 결정과 조건 테스트에 사용할 수 있는 여섯 관계 연산자가 있습니다. 결과는 true 또는 false:

< 작음

<= 작거나 같음

> 큼

>= 크거나 같음

== 같음

!= 다름

등호 테스트(==)가 대입 연산자(=)와 다르다는 점에 유의하세요. 이는 프로그래머가 가장 흔히 혼동하는 문제 중 하나입니다.

예시:

int x = 41;
x = x + 1;
if (x == 42) {
    printf("You succeed!");
}

출력:

You succeed

0이 아닌 값으로 평가되는 조건은 true로 간주됨을 기억하세요.

예시:

int present = 1;
if (present)
    printf("There is someone present in the classroom \n");

출력:

There is someone present in the classroom

If-Else 문

C 조건문 마스터: IF, IF-ELSE, 중첩 IF-ELSE 완전 정복

If-else 문은 If의 확장 버전입니다. 일반적인 형태:

if (test-expression) {
    True block of statements
} Else {
    False block of statements
}
Statements;

이 구조에서 test-expression 값이 true이면 true 블록 문장 실행, false이면 false 블록 문장 실행. 어느 경우든 실행 후 제어는 자동으로 If 블록 밖의 문장으로 이동합니다.

다음 프로그램은 if-else 구조 사용을 보여줍니다:

변수를 어떤 값으로 초기화하고, 그 값이 10보다 작은지 큰지 판단하는 프로그램을 작성해 봅시다.

시작해 볼까요.

#include<stdio.h>
int main() {
    int num=19;
    if(num<10) {
        printf("The value is less than 10");
    } else {
        printf("The value is greater than 10");
    }
    return 0;
}

출력:

The value is greater than 10

C 조건문 마스터: IF, IF-ELSE, 중첩 IF-ELSE 완전 정복

  1. 변수를 19로 초기화했습니다. C 프로그램을 사용해 이 숫자가 10보다 큰지 작은지 알아내야 합니다. 이를 위해 if-else 구조를 사용했습니다.
  2. 우리의 값을 10과 비교해야 하므로 조건 num<10을 제공했습니다.
  3. 첫 번째 블록은 항상 true 블록입니다. 즉, test-expression 값이 true이면 첫 번째 블록인 If가 실행됩니다.
  4. 두 번째 블록은 else 블록입니다. test-expression 값이 false가 되면 실행될 문장들이 여기에 있습니다. 우리 프로그램에서 num 값은 10보다 크므로 테스트 조건은 false가 되고 else 블록이 실행됩니다. 따라서 출력은 else 블록의 "The value is greater than 10"이 됩니다. if-else 후 프로그램은 성공적으로 종료됩니다.

C 프로그래밍에서 여러 if-else 구조를 서로 내부에 사용할 수 있으며, 이를 if-else 문의 중첩(nesting)이라고 합니다.

조건 표현식(Conditional Expressions)

if-else 문을 표현하는 또 다른 방법은 ?: 연산자를 도입하는 것입니다. 조건 표현식에서 ?: 연산자는 if와 else에 각각 하나의 문장만 연결합니다.

예시:

#include <stdio.h>
int main() {
    int y;
    int x = 2;
    y = (x >= 6) ? 6 : x;/* 이는 다음과 동등: if (x >= 5) y = 5; else y = x; */
    printf("y =%d ",y);
    return 0;
}

출력:

y =2

중첩 If-else 문(Nested If-else Statements)

일련의 결정이 필요할 때 중첩 if-else를 사용합니다. 중첩이란 하나의 if-else 구조를 다른 하나 안에 사용하는 것을 의미합니다.

중첩 if-else 사용을 보여주는 프로그램을 작성해 봅시다.

#include<stdio.h>
int main() {
    int num=1;
    if(num<10) {
        if(num==1) {
            printf("The value is:%d\n",num);
        } else {
            printf("The value is greater than 1");
        }
    } else {
        printf("The value is greater than 10");
    }
    return 0;
}

출력:

The value is:1

위 프로그램은 숫자가 10보다 작은지 큰지 확인하고 중첩 if-else 구조를 사용해 결과를 출력합니다.

C 조건문 마스터: IF, IF-ELSE, 중첩 IF-ELSE 완전 정복

  1. 먼저 num 변수를 1로 선언했습니다. 그런 다음 if-else 구조를 사용했습니다.
  2. 외부 if-else에서 조건은 숫자가 10보다 작은지 확인합니다. 조건이 true일 때만 내부 블록이 실행됩니다. 이 경우 조건이 true이므로 내부 블록이 처리됩니다.
  3. 내부 블록에서 다시 우리 변수가 값 1을 포함하는지 확인하는 조건이 있습니다. 조건이 true이면 If 블록 처리, 그렇지 않으면 else 블록 처리. 이 경우 조건이 true이므로 If 블록이 실행되고 값이 출력 화면에 출력됩니다.
  4. 위 프로그램은 변수 값을 출력하고 성공적으로 종료됩니다.

변수 값을 바꿔가며 프로그램 동작을 확인해 보세요.

참고: 중첩 if-else에서는 여러 if-else 구조가 관여하므로 개별 구조를 파악하기 어려워집니다. 적절한 들여쓰기로 프로그램을 읽기 쉽게 만드세요.

중첩 Else-if 문(Nested Else-if Statements)

다중 경로 결정이 필요할 때 중첩 else-if를 사용합니다.

C 프로그래밍에서 else-if 래더(ladder)가 구성되는 일반적인 문법:

if (test - expression 1) {
    statement1;
} else if (test - expression 2) {
    Statement2;
} else if (test - expression 3) {
    Statement3;
} else if (test - expression n) {
    Statement n;
} else {
    default;
}
Statement x;

이 구조를 else-if 래더라고 합니다. 이 체인은 일반적으로 사다리처럼 보이므로 else-if 래더라고도 부릅니다. 테스트 표현식은 위에서 아래로 평가됩니다. true인 테스트 표현식을 찾으면 그와 연결된 문장이 실행됩니다. 모든 n 테스트 표현식이 false가 되면 기본 else 문장이 실행됩니다.

실제 작동을 프로그램으로 확인해 봅시다.

#include<stdio.h>
int main() {
    int marks=83;
    if(marks>75){
        printf("First class");
    } else if(marks>65){
        printf("Second class");
    } else if(marks>55){
        printf("Third class");
    } else{
        printf("Fourth class");
    }
    return 0;
}

출력:

First class

위 프로그램은 테스트에서 받은 점수에 따라 등급을 출력합니다. else-if 래더 구조를 사용했습니다.

C 조건문 마스터: IF, IF-ELSE, 중첩 IF-ELSE 완전 정복

  1. marks 변수를 초기화했습니다. else-if 래더 구조에서 다양한 조건을 제공했습니다.
  2. 변수 marks의 값이 첫 번째 조건과 비교되고, true이므로 연관된 문장이 출력 화면에 출력됩니다.
  3. 첫 번째 테스트 조건이 false이면 두 번째 조건과 비교됩니다.
  4. 이 과정은 모든 표현식이 평가될 때까지 계속되거나, 제어가 else-if 래더를 벗어나 기본 문장이 출력됩니다.

값을 수정하여 출력의 변화를 관찰해 보세요.

요약


C 언어

  1. C# 식, 문, 블록: 개념과 실전 예제로 완벽 이해
  2. C# 조건문 완전 정복: if, if-else, if-else if, 중첩 if 문법과 예제
  3. C++ 조건문 마스터하기: if, if-else, 중첩 if-else 완벽 해설
  4. C 조건문 마스터: if, else, 중첩 완벽 이해
  5. Java if…else 문 완전 정복: 제어 흐름 완벽 이해
  6. C++ 연산자 총정리: 종류, 예제, 샘플 프로그램
  7. C++ switch-case 마스터하기: 문법, 활용법, 실전 예제
  8. C++ 구조체(struct) 완벽 가이드: 선언, 인스턴스, 포인터, 함수 인자 전달
  9. C++ std::list 마스터하기: 문법, 함수, 실전 예제
  10. C++ 구조체 vs 클래스: 핵심 차이, 문법, 최적 사용 사례