2025. 3. 29. 17:22ㆍProgramming Language/C++
논리 연산자의 경우는 연산자의 우선순위에 대해서 유의하면서 사용해야한다.
추가로 단락 평가(short-circuit evaluation)라는 것에 대해서만 이해하고 있으면 될것 같다.
&& 연산의 단락 평가(short-circuit evaluation)
&&연산은 모든 값이 true일때 true이고 하나의 값이라도 false라면 false를 출력한다.
만약 아래와 같은
이런 비교 연산을 한다면
이 부분에서는 true가 나오고
이 부분에서는 false가 나온다
이렇게 하면 && 연산자는 좌, 우항의 결과를 모두 확인하고 결과를 출력한다.
그러나 만약
이렇게 좌항이 false로 떨어지는 경우라면 && 연산자는 우항의 연산을 진행하지 않고 바로 false를 반환한다.
이걸 확인하는 방법으로 먼저 printf의 결과는 출력하는 값의 길이(바이트 값)를 출력한다
이렇게 실행시켜보면
이렇게 한글 2바이트 3개인 6바이트를 반환하는 것을 알 수 있다(이건 인코딩방식에 따라 값이 다를 수 있음).
그래서 이 printf를 조건절에 넣어서 출력하면서 해당 값이 출력되는지를 확인해서 실행을 했는지 안했는지를 확인해볼 수 있다.
보면 test2가 실행이 안된 것을 볼 수 있다.
이는
좌항인 부분이 false로 전달이 되었기에 우항을 실행조차 안하고 그냥 false로 반환했기 때문이다.
이게 바로 단락 평가(short-circuit evaluation)이다.
|| 연산자의 경우는 이 반대가 된다.
|| 연산자의 단락 평가(short-circuit evaluation)
|| 연산자의 경우는 좌, 우항중 하나라도 true라면 true를 반환하고 둘다 false일 경우 false를 반환한다.
그래서 좌항이 true를 반환한다면 우항에 대한 계산을 진행하지 않고 바로 true를 반환한다.
이 경우 단락 평가를 진행한다.
이것도 동일한 방식으로 확인해보면
이렇게 좌항이 true가 된다면 우항이 어떤것이던 확인하지않고 true를 반환한다.
실행시켜보면
동일하게 test1만 출력되는 것을 볼 수 있다.
'Programming Language > C++' 카테고리의 다른 글
Ch04. 연산자 - 05. 기타 연산자 (0) | 2025.03.30 |
---|---|
Ch04. 연산자 - 04. 비트 연산자 (0) | 2025.03.29 |
Ch 04. 연산자 - 02. 비교&관계 연산자 (0) | 2025.03.29 |
Ch 04. 연산자 - 01. 산술 연산자 사용의 주의점 (0) | 2025.03.29 |
Ch 03. 입출력 - 03. cin (0) | 2025.03.29 |