Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C/C++에서 while(1)과 while(0)의 차이점 완벽 정리

이번 글에서는 C/C++에서 while(1)while(0)의 차이점에 대해 자세히 알아보겠습니다. while은 C와 C++에서 사용되는 반복문으로, 조건을 검사한 뒤 해당 조건이 참(true)인 동안 루프 내부의 문장들을 계속 실행합니다.

while(1): 무한 루프

while(1) 또는 while(0이 아닌 임의의 값)은 무한 루프(infinite loop)를 만들 때 사용됩니다. 1 또는 0이 아닌 값은 항상 참으로 평가되기 때문에, 별도의 종료 조건 없이는 루프 내부의 문장들이 영원히 반복 실행됩니다.

따라서 이러한 무한 루프에서 빠져나오려면 조건문(if)과 break 문을 함께 사용해야 합니다. 실제 프로그래밍에서 서버 대기, 이벤트 처리, 임베디드 시스템 등 지속적인 동작이 필요한 경우에 자주 활용됩니다.

예제 코드

#include<iostream>
using namespace std;
main(){
    int i = 0;
    cout << "Starting Loop" << endl;
    while(1){
        cout << "The value of i: " << ++i <<endl;
        if(i == 10){ // i가 10이 되면 루프를 벗어남
            break;
        }
    }
    cout << "Ending Loop";
}

실행 결과

Starting Loop
The value of i: 1
The value of i: 2
The value of i: 3
The value of i: 4
The value of i: 5
The value of i: 6
The value of i: 7
The value of i: 8
The value of i: 9
The value of i: 10
Ending Loop

위 예제에서 while(1)은 조건이 항상 참이므로 무한히 반복하지만, 변수 i가 10이 되면 if 문 안의 break 문이 실행되어 루프가 정상적으로 종료됩니다.

while(0): 실행되지 않는 루프

반면 while(0)은 조건이 거짓(false)인 while 문으로 취급됩니다. 0은 거짓으로 평가되기 때문에 루프 내부의 문장은 단 한 번도 실행되지 않습니다. 즉, 이런 형태의 루프는 사실상 아무런 역할을 하지 못하는 무의미한 코드입니다.

예제 코드

#include<iostream>
using namespace std;
main(){
    int i = 0;
    cout << "Starting Loop" << endl;
    while(0){
        cout << "The value of i: " << ++i <<endl;
        if(i == 10){ // i가 10이 되면 루프를 벗어남
            break;
        }
    }
    cout << "Ending Loop";
}

실행 결과

Starting Loop
Ending Loop

실행 결과에서 확인할 수 있듯이, 루프 시작 메시지와 종료 메시지만 출력되고 내부 문장은 전혀 실행되지 않았습니다.

정리: while(1) vs while(0)

while(1)은 조건이 항상 참이므로 무한 루프를 생성하며, break 문 등을 통해 탈출 시점을 제어할 수 있습니다. 반대로 while(0)은 조건이 항상 거짓이므로 루프 본문이 한 번도 실행되지 않습니다. C 언어에서는 0이 아닌 모든 값을 참으로 간주한다는 점을 기억하면 두 구문의 동작 방식을 쉽게 이해할 수 있습니다.