제어 흐름 변경

2025. 3. 27. 23:06Programming Languages/C++

3.3 제어 흐름 변경

3.3.1 break 문

반복문이나 switch 문을 즉시 종료합니다.

예제 (반복문에서 break):

#include <iostream>

int main() {
    // 5를 만나면 반복 종료
    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            break;
        }
        std::cout << i << " ";
    }
    std::cout << std::endl;  // 출력: 1 2 3 4
    
    return 0;
}

예제 (중첩 반복문에서 break):

#include <iostream>

int main() {
    for (int i = 1; i <= 3; i++) {
        std::cout << "바깥 루프 " << i << ": ";
        
        for (int j = 1; j <= 5; j++) {
            if (j == 4) {
                break;  // 안쪽 루프만 종료
            }
            std::cout << j << " ";
        }
        
        std::cout << std::endl;
    }
    
    return 0;
}

출력:

바깥 루프 1: 1 2 3
바깥 루프 2: 1 2 3
바깥 루프 3: 1 2 3

3.3.2 continue 문

현재 반복을 건너뛰고 다음 반복으로 넘어갑니다.

예제:

#include <iostream>

int main() {
    // 짝수만 출력
    for (int i = 1; i <= 10; i++) {
        if (i % 2 != 0) {
            continue;  // 홀수는 건너뛰기
        }
        std::cout << i << " ";
    }
    std::cout << std::endl;  // 출력: 2 4 6 8 10
    
    return 0;
}

3.3.3 goto 문

지정된 레이블로 프로그램 실행을 무조건 이동합니다. (권장하지 않음)

예제:

#include <iostream>

int main() {
    int i = 1;
    
start:  // 레이블
    if (i <= 5) {
        std::cout << i << " ";
        i++;
        goto start;  // start 레이블로 이동
    }
    
    std::cout << std::endl;
    
    return 0;
}

주의: goto는 코드의 가독성과 유지보수성을 크게 저하시키므로 가능한 다른 제어 구조로 대체하는 것이 좋습니다.

3.3.4 return 문

함수 실행을 종료하고 값을 반환합니다. (main 함수 내에서는 프로그램 종료)

예제:

#include <iostream>

// 두 수의 최대값을 반환하는 함수
int max(int a, int b) {
    if (a > b) {
        return a;  // a가 크면 a 반환하고 함수 종료
    }
    return b;      // 그렇지 않으면 b 반환하고 함수 종료
}

int main() {
    std::cout << "최대값: " << max(10, 20) << std::endl;
    
    // 조건에 따른 조기 반환
    int num = -5;
    if (num < 0) {
        std::cout << "음수는 처리할 수 없습니다." << std::endl;
        return 1;  // 비정상 종료 (오류 코드 반환)
    }
    
    // 이 코드는 num이 음수면 실행되지 않음
    std::cout << "제곱: " << num * num << std::endl;
    
    return 0;  // 정상 종료
}

 

'Programming Languages > C++' 카테고리의 다른 글

챕터3. 실습문제  (0) 2025.03.27
조건부 컴파일  (0) 2025.03.27
반복문  (0) 2025.03.27
제어문  (0) 2025.03.27
챕터2. 실습 문제  (0) 2025.03.27