C++/문법

if문 속 비교연산에서 순서의 비밀

그린티라떼 2021. 8. 30. 02:12

if문 작성 시 무심코 순서를 생각하지 않고 비교 연산을 하게 된다면 문제가 생길 가능성이 크다.

이유
  • if문내의 모든 논리연산은 앞의 논리부터 뒤의 논리까지 순차적으로 연산한다.
  • || 연산에서 순차적으로 앞의 논리가 참이 된다면 더 이상 연산하지 않는다.
  • && 연산에서 순차적으로 앞의 논리가 거짓이라면 더 이상 연산하지 않는다.

-> 연산을 끝까지 하지 않는 경우가 있다.

 

코드 
int a=0, b=0, c=0;

if( a == b || c++ > a ) std::cout<< "Hi";
if( c == 1 ) std::cout<< "c++";
결과

Hi

첫 if문에서 앞의 비교문 a==b 에서 참이 되므로 뒤의 비교문은 실행되지 않는다. 

 결국 c = 0이고 두번째 If문은 실행되지 않는다.

 

 

순서를 생각하며 if문을 작성하도록 하자.