728x90
논리 연산자
if (a > b)에서 > 연산자가 바로 논리 연산자이다.
이 연산자는 두 값을 비교해서 왼쪽 값이 오른쪽 값보다 크면 '참'이란 결과를 낸다.
다른 논리 연산자도 모두 이 패턴에 따라 최종 결과는 true나 false가 된다.
< <= > >= |
왼쪽 값이 오른쪽 값보다 작은지(<), 작거나 같은지(<=), 큰지(>), 크거나 같은지(>=) 비교한다. |
if (i < 0) { std::cout << "i는 음수다."; } |
== | 왼쪽 값이 오른쪽 값과 같은지 판단한다 | if (i == 3) { std::cout << "i는 3이다."; } |
!= | 왼쪽 값이 오른쪽 값과 다른지 검사한다. | if (i != 3) { std::cout << "i는 3이 아니다."; } |
! | 부울 표현식의 값(true/false)에 대한 값을 구하는 논리부정(NOT)에 대한 단항 연산자. | if (!somejBoolean) { std::cout << "someBoolean이 false다."; } |
&& | 논리곱(AND)에 대한 연산자로서, 양쪽에 나온 표현식이 모두 true여야 전체 결과가 true가 된다. |
if (someBoolean && someOtherBoolean) { std:: cout << "둘 다 true다."; } |
|| | 논리합(OR)에 대한 연산자로서, 양쪽에 나온 표현식 중에서 어느 하나가 true면 전체가 true다. |
if (someBoolean || someOtherBoolean) { std::cout << "적어도 하나가 true다."; } |
C++은 논리 표현식을 단락 논리(축약 논리) 방식으로 평가한다.
표현식을 평가하는 도중에 최종 결과가 확정되면 나머지 부분은 평가하지 않는다.
bool result = bool1 || bool2 || (i > 7) || (27 /13 % i + 1) < 2;
여기서 bool1이 true라는 결과 나오면 표현식 전체가 true일 수밖에 없으므로 나머지 부분은 평가하지 않는다.
단락 기능은 프로그램 성능을 높이는데 도움이 된다.
'💻프로그래밍 내용 정리 > C++17' 카테고리의 다른 글
[C++ 1.1.10] C 스타일 배열, 영 초기화, 이니셜라이저 리스트, std::size(), sizeof (0) | 2022.08.15 |
---|---|
[C++ 1.1.9] 함수, 함수 선언, 함수 정의, 함수 리턴 타입 추론(auto), 현재 함수 이름(__func__) (0) | 2022.08.15 |
[C++ 1.1.7] 조건문(if/else/switch), 이니셜라이저, 폴스루(fallthrough), 조건 연산자 (0) | 2022.08.15 |
[C++ 1.1.6] 상수와 타입(enum), 엄격한 타입(enum class(스트롱 타입)), 구조체(struct) (0) | 2022.08.15 |
[C++ 1.1.5] 연산자(단항, 이항, 비트 연산자) (0) | 2022.08.15 |