if 조건2개 앤드 시에 2번째 조건 검사
글쓴이: perseuse / 작성시간: 금, 2023/05/26 - 5:58오후
만약 아래와 같은 if 문에서 2번째 조건을 검사 할까요?
---------------------------------
int a = 0;
if( (a == 1) && (b > ++c) )
{
...
}
---------------------------------
첫 번째 a 검사에서 거짓으로 판단 했을 때
두 번째 조건을 검사할까요? 한다면 ++c 는 수행 될까요?
그리고..컴파일러에 따라서 첫조건이 거짓이더라도..두번째 조건을 검사한다던데..그럴수도 있을지..
첫 조건이 거짓인데 두번빼 조건을 검사하면 ++c 가 수행이 되니까...
개발한 의도대로 안될수도 있지 않을까요?
Forums:
short-circuit 때문에 두번째 조건 판단안할
short-circuit 때문에 두번째 조건 판단안할 겁니다(100% 장담 못하는 건 세상에는 정말 많은 컴파일러가 있기에....). 이런 문제를 방지하기 위해 한 문장에는 하나의 효과만 발생되도록 코딩하는 것을 추천드립니다.
보다는
가 좋은 스타일입니다.
...
C/C++은 (A && B)를 만났을 때 무조건 먼저 A의 값을 계산해서 참일 경우에만 B를 수행합니다. 표준으로 보장되어 있습니다. 따라서 위의 코드에서 a가 0이라면 (b > ++c)는 수행되지 않습니다.
만약 이 상황에서 ++c를 수행하는 컴파일러가 있다면 버그입니다. 아니면 표준을 지키지 않는 거지같은 시스템이거나... (그말이 그말인가...)
댓글 달기