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문을 작성하도록 하자.
'C++ > 문법' 카테고리의 다른 글
(C++) 함수의 인자 또는 리턴 값에 STL 데이터 타입에 관하여 (2) | 2022.11.12 |
---|---|
c++ regex 정규 표현식 (0) | 2021.12.22 |
C++) Container비교 (0) | 2021.08.25 |
C++) cout 스트림 버퍼/ 함수 호출 오버헤드/ Inline함수 (0) | 2021.05.08 |