간혹 C언어를 배우는 분께 이런 질문을 받습니다.

if 절에서 함수를 호출하고 결과로 반환된 값이 0이면 정상 처리하는

것이 이상하다는 것이죠.


이상하게 생각할 수 있는 것이 C언어에서는 0은 거짓으로 0이 아닌 숫자는

참으로 판단하기 때문이죠. 거짓이라면 부정적인 생각이 드는데,

다른 분의 코드를 보면 0 일 때 정상 처리되었다고 판단하는 것이 이상하다는

얘기입니다.


아래 코드만 보더라도 사용하려는 장치를 정상적으로 열었다면 TRUE값을 반환하면

프로그램 코드가 읽기 쉽게 보입니다.


if ( open_device( "사용하려는 장치"){

       // 정상 처리

}


그러나 프로그램을 작성하다 보면, 그리고 대부분의 C언어가 제공하는 함수는

아래와 같이 작성하게 합니다.


if ( 0 == open_device( "사용하려는 장치"){

       // 정상 처리

}


이유는 간단합니다. 에러가 발생했는데, 그 에러 상황이 여러 가지일 경우를 대비하기
위해서 입니다.

아래의 코드를 봐 주세요.

switch( open_device( "사용하려는 장치")){
case 0:   정상 처리;
            break;
case -1 : 장치가 없음;
            break;
case -2 : 장치를 사용할 권한이 없음;
            break;
case -3 : 이미 다른 어플리케이션이 사용 중
            break;
default :  기타 에러;
             break;
}

이해 되시죠? ^^