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문을 작성하도록 하자.