C 语言中的条件和 if...else 语句

您已经学习过 C 语言支持数学中的常见逻辑条件:

  • 小于:a < b
  • 小于或等于:a <= b
  • 大于:a > b
  • 大于或等于:a >= b
  • 等于:a == b
  • 不等于:a != b

您可以使用这些条件来根据不同的决策执行不同的操作。

C 语言具有以下条件语句:

  • 使用 if 来指定要执行的代码块,如果指定的条件为真
  • 使用 else 来指定要执行的代码块,如果相同的条件为假
  • 使用 else if 来指定要测试的新条件,如果第一个条件为假
  • 使用 switch 来指定要执行的许多备选代码块

if 语句

使用 if 语句指定要执行的代码块,如果条件为真。

语法

if (condition) {
// 要在条件为真时执行的代码块
}

请注意,if 是小写字母。大写字母(If 或 IF)会生成错误。

在下面的示例中,我们测试两个值以找出 20 是否大于 18。如果条件为真,则打印一些文本:

if (20 > 18) {
printf("20 is greater than 18");
}

我们也可以测试变量:

int x = 20;
int y = 18;
if (x > y) {
printf("x is greater than y");
}

例子解释

在上面的示例中,我们使用两个变量 xy 来测试 x 是否大于 y(使用 > 运算符)。由于 x 为 20,y 为 18,并且我们知道 20 大于 18,因此我们在屏幕上打印“x is greater than y”。

else 语句

使用 else 语句指定要执行的代码块,如果条件为假。

语法

if (condition) {
// 如果条件为真,则执行的代码块
} else {
// 如果条件为假,则执行的代码块
}
int time = 20;
if (time < 18) {
printf("Good day.");
} else {
printf("Good evening.");
}
// 输出 "Good evening."

例子解释

在上面的示例中,时间 (20) 大于 18,因此条件为假。因此,我们移动到 else 条件并打印到屏幕“Good evening”。如果时间小于 18,则程序将打印“Good day”。

else if 语句

使用 else if 语句指定新的条件,如果第一个条件为假。

语法

if (condition1) {
// 如果条件1为真,则执行的代码块
} else if (condition2) {
// 如果条件1为假且条件2为真,则执行的代码块
} else {
// 如果条件1为假且条件2为假,则执行的代码块
}
int time = 22;
if (time < 10) {
printf("Good morning.");
} else if (time < 20) {
printf("Good day.");
} else {
printf("Good evening.");
}
// 输出 "Good evening."

例子解释

在上面的示例中,时间 (22) 大于 10,因此第一个条件为假。下一个条件,在 else if 语句中,也是假的,因此我们移动到 else 条件,因为 condition1condition2 都是假的 - 并打印到屏幕“Good evening”。

但是,如果时间是 14,我们的程序会打印“Good day”。

另一个例子

此示例展示了如何使用 if..else 找出数字是正数还是负数:

int myNum = 10; // 这是一个正数还是负数?

if (myNum > 0) {
printf("The value is a positive number.");
} else if (myNum < 0) {
printf("The value is a negative number.");
} else {
printf("The value is 0.");
}

C 语言中的简洁 if...else 语句(三元运算符)

除了标准的 if...else 语句之外,C 语言还提供了一种简写形式,称为三元运算符,因为它由三个操作数组成。它可以将多行代码替换为一行,通常用于替换简单的 if...else 语句。

语法

variable = (condition) ? expressionTrue : expressionFalse;

示例

以下代码用标准的 if...else 语句判断时间是否晚于 18 点:

int time = 20;
if (time < 18) {
printf("Good day.");
} else {
printf("Good evening.");
}

使用三元运算符可以简写为:

int time = 20;
(time < 18) ? printf("Good day.") : printf("Good evening.");

两种方式都将输出 "Good evening."。

优点

三元运算符的优点在于简洁,可以将多行代码替换为一行,使代码更易读。

缺点

三元运算符的缺点在于可读性下降,尤其是嵌套使用时,可能会使代码难以理解。

使用建议

建议在简单的 if...else 语句中使用三元运算符,以简化代码。在复杂的情况下,建议使用标准的 if...else 语句,以保持代码的可读性。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

C 语言教程:条件和 if...else 语句的更多相关文章

  1. 单片机c语言教程:C51循环语句

    单片机c语言教程第十三课 C51循环语句 循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作.如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 ...

  2. 2018-02-18 Antlr4实现简单语言之条件语句

    本系列之前的文章: Antlr4的分析错误处理 Antlr4实现数学四则运算 Antlr4添加中文变量赋求值,括号,各种问题 Antlr4: 修改语法规则更接近普通BNF格式 Antlr4实现简单语言 ...

  3. [Objective-C语言教程]循环语句(9)

    当需要多次执行同一代码块时,可以使用循环来解决. 通常,语句按顺序执行:首先执行函数中的第一个语句,然后执行第二个语句,依此类推. 编程语言提供各种控制结构,允许更复杂的执行路径.循环语句可用于多次执 ...

  4. 写给.NET开发者的Python教程(三):运算符、条件判断和循环语句

    本节会介绍Python中运算符的用法,以及条件判断和循环语句的使用方法. 运算符 运算符包括算术运算符.赋值运算符.比较运算符.逻辑运算符等内容,大部分用法和C#基本一致,下面我们来看一下: 算数运算 ...

  5. 04- Shell脚本学习--条件控制和循环语句

    条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expre ...

  6. Go安装配置和《菜鸟教程之Go语言教程》学习笔记

    Go 语言是一种让代码分享更容易的编程语言 菜鸟教程-Go语言教程(这个教程过于基础,体现不了Go的特性和强大.) 下载/安装Go语言 https://golang.org/dl/ Mac OS X ...

  7. Swift3.0语言教程替换子字符串

    Swift3.0语言教程替换子字符串 Swift3.0语言教程替换子字符串,替换子字符串其实就是将字符串中的子字符串删除,然后再进行添加.为了让这一繁琐的过程变的简单,NSString提供了替换子字符 ...

  8. Swift3.0语言教程查找字符集和子字符串

    Swift3.0语言教程查找字符集和子字符串 Swift3.0语言教程查找字符集和子字符串,在字符串中当字符内容很多时,我们就需要使用到查找字符集或者子字符串的方法.以下我们将讲解3种查找字符集和子字 ...

  9. Swift3.0语言教程比较、判断字符串

    Swift3.0语言教程比较.判断字符串 Swift3.0语言教程比较.判断字符串,在一个程序中字符串很多时,常常会做的操作就是对这些字符串进行比较和判断.本小节将讲解这些内容. 1.不区分大小写比较 ...

  10. python学习笔记2_条件循环和其他语句

    一.条件循环和其他语句 1.print和import的更多信息. 1.1.使用逗号输出  //print() 打印多个表达式是可行的,用逗号隔开.       在脚本中,两个print语句想在一行输出 ...

随机推荐

  1. [WPF]使用HLSL实现百叶窗动效

    百叶窗动画是制作PPT时常用的动画之一,本文将通过实现百叶窗动画效果的例子介绍在WPF中如何使用ShaderEffect.ShaderEffect是使用高级着色器语言(High Level Shadi ...

  2. 10款Visual Studio实用插件

    前言 俗话说的好工欲善其事必先利其器,安装一些Visual Studio实用插件对自己日常的开发和工作效率能够大大的提升,避免996从选一款好的IDE实用插件开始.以下是我认为比较实用的Visual ...

  3. 当开源项目 Issue 遇到了 DevChat

    目录 1. 概述 2. Bug 分析与复现 3. Bug 定位与修复 4. 代码测试 5. 文档更新 6. 提交 Commit 7. 总结 1. 概述 没错,又有人给 GoPool 项目提 issue ...

  4. Java 21 新特性:switch的模式匹配

    在之前的Java 17新特性中,我们介绍过关于JEP 406: switch的模式匹配,但当时还只是关于此内容的首个预览版本.之后在JDK 18.JDK 19.JDK 20中又都进行了更新和完善.如今 ...

  5. Unexpected keys "@@dva", "user" found in preloadedState argument passed to createStore. Expected to find one of the known reducer keys instead: "router", "loading". Unexpected keys will be ignored.

    Please use `require("history").DOMUtils` instead of `require("history/DOMUtils") ...

  6. Windows11如何设置经典的右键菜单

    使用Windows11几个月了,解决了我的电脑经常性彻底死机.蓝屏的问题,系统也流畅.易用了好多.唯一不能忍受的是右键菜单,经常需要再点一次才能找到自己想要的选项,今天网搜了下解决办法,特记录于此. ...

  7. Java 队列Queue的一些基本操作与概念!!!!!!!!

    首先Java中的队列(Queue)是一种先进先出的数据结构. 其中常见的一些基本操作与方法,包括: 1.创建队列对象.例如:ArrayDeque.LinkedList等. 2.入队操作.将元素添加到队 ...

  8. 深入MySQL索引,这篇千万不能错过

    大家好,我是[码老思],索引是一个数据库绕不开的话题,今天和大家一起聊聊. 1. 索引 索引是对数据库表中一列或多列的值进行排序的一种结构. MySQL索引的建立对于MySQL的高效运行是很重要的,索 ...

  9. 23集训 Day4 数论

    快速幂 定义 快速幂,是一个在 \(\Theta(\log n)\) 的时间内计算 \(a^n\) 的小技巧,而暴力的计算需要 \(\Theta(n)\) 的时间. 解释 \[\because a^{ ...

  10. Emit 实体绑定源码开源,支持类以及匿名类绑定(原创)

    动态实体绑定 主要有以下两种 1.表达式树构建委托 2.Emit构建委托 根据我的经验 Emit 代码量可以更少可以很好实现代码复用 Emit实践开源项目地址跳转 https://www.cnblog ...