Menu
CoddyTech

逻辑运算符第 3 部分

本课属于 Coddy Rust 学习旅程的“基础知识”单元。第 23 课,共 75 课。

检查多个条件时,计算机一旦知道最终答案,就会停止检查(这称为短路求值)。

例如:

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

这里 x 等于 0,因此它不会计算 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 < 2 和 d < 10 不会被求值,因为 a > 0 和 c < -5 都为假。

challenge icon

挑战

入门

创建一个程序,判断今天是否适合利用太阳能发电

初始化这些变量:

  • is_sunny 的值为 true
  • wind_speed 的值为 5.4
  • temperature 的值为 23
  • solar_panel_output 的值为 9
  • is_cloudy 的值为 false

创建一个逻辑表达式,检查以下所有条件:

  • 天气晴朗
  • 风速小于 10
  • 太阳能板的输出小于 15
  • 气温高于 20 OR 没有云

亲手试试

fn main() {
    // 初始化变量
    // 用任务中的值替换下面的占位值
    let is_sunny: bool = false;
    let wind_speed: f64 = 99.0;
    let temperature: i32 = 0;
    let solar_panel_output: i32 = 99;
    let is_cloudy: bool = true;
    
    // 完整的逻辑表达式
    // 用完整的条件替换下面的占位内容
    let result: bool = false;
    
    // 不要删除下面的代码行
    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自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Rust 在线编译器