논리 연산자 파트 3
Coddy C++ 여정의 기초 섹션에 포함된 레슨 — 74개 중 26번째.
여러 조건을 확인할 때, 컴퓨터는 최종 결과를 알게 되는 즉시 확인을 중단합니다 (이를 단락 평가(short-circuit evaluation)라고 합니다).
예를 들어:
int x = 0;
int y = 5;
bool result = x != 0 && y / x > 2;여기서 x는 0과 같으므로, y / x > 2를 평가하지 않습니다. 만약 순서를 바꾼다면:
bool result = y / x > 2 && x != 0;y가 0으로 나누어지게 되는데, 이는 수학에서 불가능하므로 오류가 발생합니다.
이 기술은 논리식의 평가를 최적화하는 데 사용됩니다. 예를 들어:
int a = 0;
int b = 2;
int c = 3;
int d = 5;
bool result = (a > 0 && b < 2) || (c < -5 && d < 10);이 예제에서, a > 0와 c < -5가 모두 거짓이기 때문에 b < 2와 d < 10은 평가되지 않습니다.
챌린지
초급태양광 패널 에너지 생산에 적합한 날인지 결정하는 프로그램을 작성하세요.
다음 변수들을 초기화하세요:
isSunny: truewindSpeed: 5.4temperature: 23solarPanelOutput: 9isCloudy: false
다음의 모든 조건을 확인하는 하나의 논리식을 만드세요:
- 날씨가 맑음 (sunny)
- 풍속이 10 미만임
- 태양광 패널 출력이 15 미만임
- 온도가 20 초과 또는 구름이 없음
치트 시트
단락 평가(Short-circuit evaluation)는 컴퓨터가 최종 결과를 알게 되는 즉시 조건 확인을 중단하는 것을 의미합니다.
&& (AND)의 경우, 첫 번째 조건이 거짓(false)이면 두 번째 조건은 평가되지 않습니다:
int x = 0;
int y = 5;
bool result = x != 0 && y / x > 2; // y / x > 2는 평가되지 않음|| (OR)의 경우, 첫 번째 조건이 참(true)이면 두 번째 조건은 평가되지 않습니다:
bool result = (a > 0 && b < 2) || (c < -5 && d < 10);
// a > 0이 거짓(false)이면, c < -5와 d < 10은 평가되지 않음이는 (0으로 나누기 같은) 오류를 방지하고 불필요한 평가를 피함으로써 성능을 최적화합니다.
직접 해보기
#include <iostream>
int main() {
// 변수 초기화
// 전체 논리식
bool result =
// 결과 출력
std::cout << "1. Is it sunny? " << std::boolalpha << isSunny << std::endl;
std::cout << "2. Is wind speed safe? " << (windSpeed < 10) << std::endl;
std::cout << "3. Do panels produce less? " << (solarPanelOutput < 15) << std::endl;
std::cout << "4. Is temperature good OR no clouds? " << (temperature > 20 || !isCloudy) << std::endl;
std::cout << "5. Final result: " << result << std::endl;
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.