文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Rust 基础系列 #6: 条件语句

2024-11-30 13:19

关注

什么是条件语句?

在编写代码的时候,最常见的任务之一就是检查某些条件是否为 true 或 false。“如果温度高于 35°C,打开空调。”

通过使用 if 和 else 这样的关键字(有时候结合使用),程序员可以根据条件(例如提供的参数数量、从命令行传递的选项、文件名、错误发生等)改变程序的行为。

所以,对一个程序员来说,了解任何语言的控制流都是至关重要的,更不用说 Rust 了。

条件运算符

下表列出了所有常用的单个条件运算符:

运算符

示例

解释

>

a > b

a 大于 b

<

a < b

a 小于 b

==

a == b

a 等于 b

!=

a != b

a 不等于 b

>=

a >= b

a 大于 或 等于 b

<=

a <= b

a 小于 或 等于 b

以及下表是逻辑运算符,它们用于一个或多个条件之间:

运算符

示例

解释

|| (逻辑或)

条件1 || 条件2

条件1 或 条件2 中至少有一个为 true

&& (逻辑与)

条件1 && 条件2

所有 条件都为 true

! (逻辑非)

!条件

条件 的布尔值的相反值

📋 与数学相似,你可以使用圆括号来指定操作的优先级。

使用 if else

要控制 Rust 代码的基本流程,使用两个关键字:if 和 else。这可以根据提供的条件的状态创建两个“执行路径”。

一个简单的带有替代执行路径的 if 块的语法如下:

if 条件 {
    <语句>;
} else {
    <语句>;
}

📋 当只有一个条件时,将其括在圆括号中并不是强制性的。根据语法,使用圆括号是可选的。你仍然应该使用它们来指定优先级并优化可读性。

来看看一个例子。

fn main() {
    let a = 36;
    let b = 25;

    if a > b {
        println!("a 大于 b");
    } else {
        println!("b 大于 a");
    }
}

这里,我声明了两个整数变量 a 和 b,它们的值分别为 '36' 和 '25'。在第 5 行,我检查变量 a 中存储的值是否大于变量 b 中存储的值。如果条件计算结果为 true,则会执行第 6 行的代码。如果条件计算结果为 false,由于我们有一个 else 块(可选),第 8 行的代码将被执行。

来看看程序的输出。

a 大于 b

完美!

来修改一下变量 a 的值,使其小于变量 b 的值,看看会发生什么。我将把 a 的值改为 '10'。修改后的输出如下:

b 大于 a

但是,如果我将相同的值存储在变量 a 和 b 中呢?为了看到这一点,我将两个变量的值都设置为 '40'。修改后的输出如下:

b 大于 a

嗯?从逻辑上讲,这没有任何意义... :frowning:

但是这可以改进!我们继续。

使用 else if 条件

与其他任何编程语言一样,你可以使用 else if 块来提供多于两个的执行路径。语法如下:

if 条件 {
    <语句>;
} else if 条件 {
    <语句>;
} else {
    <语句>;
}

现在,通过使用 else if 块,我可以改进程序的逻辑。下面是修改后的程序。

fn main() {
    let a = 40;
    let b = 40;

    if a == b {
        println!("a 与 b 是相等的");
    } else if a > b {
        println!("a 大于 b");
    } else {
        println!("b 大于 a");
    }
}

现在,我的程序的逻辑是正确的。它已经处理了所有的边缘情况(我能想到的)。第 5 行处理了 a 等于 b 的情况。第 7 行处理了 a 可能大于 b 的情况。而 a 小于 b 的情况则由第 9 行的 else 块隐式处理。

现在,当我运行这段代码时,我得到了以下输出:

a 与 b 是相等的

现在这就完美了!

示例:找到最大值

我知道使用 if 和 else 很容易,但是让我们再看一个程序。这次,我们来比较三个数字。我还将在这个实例中使用逻辑运算符!

fn main() {
    let a = 73;
    let b = 56;
    let c = 15;

    if (a != b) && (a != c) && (b != c) {
        if (a > b) && (a > c) {
            println!("a 是最大的");
        } else if (b > a) && (b > c) {
            println!("b 是最大的");
        } else {
            println!("c 是最大的");
        }
    }
}

这个程序第一眼看上去可能很复杂,但是不要害怕,我会解释的!

最开始,我声明了三个变量 ab 和 c,并赋予了我能想到的随机值。然后,在第 6 行,我检查了没有变量的值与其他变量相同的条件。首先,我检查 a 和 b 的值,然后是 a 和 c,最后是 b 和 c。这样我就可以确定没有变量中存储了重复的值。

然后,在第 7 行,我检查了变量 a 中存储的值是否是最大的。如果这个条件计算结果为 true,则会执行第 8 行的代码。否则,将检查第 9 行的执行路径。

在第 9 行,我检查了变量 b 中存储的值是否是最大的。如果这个条件计算结果为 true,则会执行第 10 行的代码。如果这个条件也是 false,那么只有一种可能。3 个变量中的最大值既不是 a 也不是 b

所以,自然地,在 else 块中,我打印出变量 c 拥有最大值。

来看看程序的输出:

a 是最大的

这是预期的结果。尝试修改分配给每个变量的值,并自己测试一下! :smiley:

总结

你学习到了如何使用 if 和 else 语句。在你继续使用大量 if else if 语句制作自己的 AI 之前(哈哈),让我们在本系列的下一篇文章中学习 Rust 中的循环。

持续关注。

来源:Linux中国内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯