kyuseo의 게임 프로그래밍

if 구문에서 비교 연산(&&, ||)을 동시에 여러 개 할 경우 순서 본문

C++ 개발

if 구문에서 비교 연산(&&, ||)을 동시에 여러 개 할 경우 순서

kyuseo 2008. 1. 7. 20:08

개요..

 

if 구문에서 비교 연산을 동시에 할 경우 어느 구문을 먼저 사용하고 생략하는지 Release 버전과 Debug 버전을 실험을 해보았습니다. 

 

다운로드

 

 

 

결론

 

- if 구문내의 모든 비교연산은 앞의 것부터 뒤의 것을 순차적으로 연산하고

 

- || 연산의 경우 앞의 것이 1개라도 참이라면 더 이상 연산을 하지 않고

 

- && 연산의 경우 앞의 것이 1개라도 거짓이라면 더 이상 연산을 하지 않습니다.

   

이러한 연산 순서를 알면 if 문을 유용하게 사용할 수 있습니다.

   

 

코드

 

if 구문의 strlen과 NULL 을 비교 하는 경우

BOOL is_1over_length( LPCSTR psz )

{

    if( psz != NULL && strlen( psz ) > 1 ) return TRUE; // NULL 부터 비교하기 때문에 어떠한 인자라도 정상 작동됨

    return FALSE;

}

 

 

소스의 중요부분 

AfxMessageBox( "if( A1(0) || A2(0) )" );

if( A1(0) || A2(0) )

{

    AfxMessageBox( "if( A1(0) || A2(0) ) == 1" );

}

 

AfxMessageBox( "if( A1(1) || A2(0) )" );

if( A1(1) || A2(0) )

{

    AfxMessageBox( "if( A1(1) || A2(0) ) == 1" );

}

 

AfxMessageBox( "if( A1(0) || A2(1) )" );

if( A1(0) || A2(1) )

{

    AfxMessageBox( "if( A1(0) || A2(1) ) == 1" );

}

 

AfxMessageBox( "if( A1(1) || A2(1) )" );

if( A1(1) || A2(1) )

{

    AfxMessageBox( "if( A1(1) || A2(1) ) == 1" );

}

   

AfxMessageBox( "if( A1(0) && A2(0) )" );

if( A1(0) && A2(0) )

{

    AfxMessageBox( "if( A1(0) && A2(0) ) == 1" );

}

 

AfxMessageBox( "if( A1(1) && A2(0) )" );

if( A1(1) && A2(0) )

{

AfxMessageBox( "if( A1(1) && A2(0) ) == 1" );

}

 

AfxMessageBox( "if( A1(0) && A2(1) )" );

if( A1(0) && A2(1) )

{

    AfxMessageBox( "if( A1(0) && A2(1) ) == 1" );

}

 

AfxMessageBox( "if( A1(1) && A2(1) )" );

if( A1(1) && A2(1) )

{

    AfxMessageBox( "if( A1(1) && A2(1) ) == 1" );

}