Menu
Coddy logo textTech

논리 연산자 파트 3

Coddy Rust 여정의 Fundamentals 섹션에 포함된 레슨 — 75개 중 23번째.

여러 조건을 확인할 때, 컴퓨터는 최종 결과를 알게 되는 즉시 확인을 중단합니다 (이를 단락 평가(short-circuit evaluation)라고 합니다).

예를 들어:

let x: i32 = 0;
let y: i32 = 5;
let result: bool = x != 0 && y / x > 2;

여기서 x0과 같으므로, y / x > 2를 평가하지 않습니다. 만약 순서를 뒤집는다면 다음과 같습니다:

let result: bool = y / x > 2 && x != 0;

y가 0으로 나누어지게 되는데, 이는 수학에서 불가능하므로 오류가 발생합니다.

이 기법은 논리식의 평가를 최적화하는 데 사용됩니다. 예를 들어:

let a: i32 = 0;
let b: i32 = 2;
let c: i32 = 3;
let d: i32 = 5;
let result: bool = (a > 0 && b < 2) || (c < -5 && d < 10);

이 예제에서 b < 2d < 10a > 0c < -5가 모두 거짓(false)이기 때문에 평가되지 않습니다.

challenge icon

챌린지

초급

태양광 패널 에너지 생산에 적합한 날인지 결정하는 프로그램을 만들어 봅시다.

다음 변수들을 초기화하세요:

  • is_sunny: true
  • wind_speed: 5.4
  • temperature: 23
  • solar_panel_output: 9
  • is_cloudy: false

다음의 모든 조건을 확인하는 하나의 논리식을 작성하세요:

  • 날씨가 맑음 (sunny)
  • 풍속(wind speed)이 10 미만임
  • 태양광 패널 출력(solar panel output)이 15 미만임
  • 온도(temperature)가 20 초과 또는(OR) 구름이 없음

치트 시트

Rust는 여러 조건을 확인할 때 단락 평가(short-circuit evaluation)를 사용합니다. 즉, 최종 결과가 결정되는 즉시 평가를 중단합니다.

&& (AND)의 경우, 첫 번째 조건이 거짓(false)이면 두 번째 조건은 평가되지 않습니다:

let x: i32 = 0;
let y: i32 = 5;
let result: bool = x != 0 && y / x > 2; // 안전함 - y/x는 평가되지 않음

|| (OR)의 경우, 첫 번째 조건이 참(true)이면 두 번째 조건은 평가되지 않습니다:

let a: i32 = 0;
let b: i32 = 2;
let c: i32 = 3;
let d: i32 = 5;
let result: bool = (a > 0 && b < 2) || (c < -5 && d < 10);
// b < 2와 d < 10은 평가되지 않음

이러한 최적화는 불필요한 계산을 방지하고 0으로 나누기(division by zero)와 같은 런타임 오류를 피할 수 있게 해줍니다.

직접 해보기

fn main() {
    // 변수 초기화
    
    
    // 전체 논리식
    let result: bool = 
    
    // 아래 줄을 삭제하지 마세요
    println!("Checking conditions for solar energy production...");
    println!("1. Is it sunny? {}", is_sunny);
    println!("2. Is wind speed safe? {}", (wind_speed < 10.0));
    println!("3. Can panels produce more? {}", (solar_panel_output < 15));
    println!("4. Is temperature good OR no clouds? {}", (temperature > 20 || !is_cloudy));
    println!("\\nFinal result - Good day for solar energy production: {}", result);
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Fundamentals의 모든 레슨