Skip to content

Latest commit

 

History

History
195 lines (146 loc) · 4.81 KB

c_conditions.md

File metadata and controls

195 lines (146 loc) · 4.81 KB

C If ... Else

条件和 If 语句

您从 运算符章节 中了解到,C 支持数学中的常见逻辑条件:

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

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

C 有以下条件语句:

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

if 语句

使用 if 语句指定在条件为 true 时要执行的 C 代码块。

语法

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

其执行过程可表示为下图:

      ┆
╭┈┈┈┈┈▼┈┈┈┈┈╮ 
┆ condition ├┈┈┈╮
╰┈┈┈┈┈┈┈┈┈┈┈╯   ┆
      ┆ truefalse
      ▼         ┆
 ╭┈┈┈┈┴┈┈┈┈╮    ┆
 ┆  语句块  ┆    ┆
 ╰┈┈┈┈┬┈┈┈┈╯    ┆
      ├┈◀┈┈┈┈┈┈┈╯
      ▼

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

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

if (20 > 18) {
  printf("20 大于 18");
}

我们还可以测试变量:

int x = 20;
int y = 18;
if (x > y) {
  printf("x 大于 y");
}

示例说明

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

else 语句

使用 else 语句指定在条件(condition) 为 false 时要执行的代码块。

语法

if (条件) {
  // 条件为真(true)时执行的代码块
} else {
  // 条件为假(false)时执行的代码块
}

其执行过程可表示为下图:

                   ┆
                   ▼
       true  ╭┈┈┈┈┈┴┈┈┈┈┈╮ false
     ╭┈┈┈┈┈┈┈┤ condition ├┈┈┈┈┈┈┈╮
     ▼       ╰┈┈┈┈┈┈┈┈┈┈┈╯       ▼
╭┈┈┈┈┴┈┈┈┈┈╮                ╭┈┈┈┈┴┈┈┈┈┈╮
┆  语句块1  ┆                ┆  语句块2  ┆
╰┈┈┈┈┬┈┈┈┈┈╯                ╰┈┈┈┈┬┈┈┈┈┈╯
     ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┬┈┈┈┈┈┈┈┈┈┈┈┈┈╯
                   ▼
int time = 20;
if (time < 18) {
  printf("再会!");
} else {
  printf("晚上好!");
}
// 输出 -> "晚上好!"

示例说明

在上面的示例中,时间 (20) 大于 18,因此条件为 false。 因此,我们转到 else 条件并打印到屏幕“晚安”。 如果时间小于 18,程序将打印 “晚上好!”。

else if 语句

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

语法

if (条件1) {
  // 如果 条件 1 为真(true),则要执行的代码块
} else if (条件2) {
  // 如果 条件 1 为假(false)且 条件 2 为真(true),则要执行的代码块
} else {
  // 如果 条件 1 为假(false)且 条件 2 为假(false),则要执行的代码块
}
int time = 22;
if (time < 10) {
  printf("早上好!");
} else if (time < 20) {
  printf("再会!");
} else {
  printf("晚上好!");
}
// 输出 -> "晚上好!"

示例说明

在上面的示例中,时间 (22) 大于 10,因此第一个条件falseelse if 语句中的下一个条件也是 false,所以我们继续讨论 else 条件,因为 条件1条件2 都是 false - 并打印到 屏幕“晚上好”。

但是,如果时间是 14,我们的程序将打印“再会!”。

另一个例子

这个例子展示了如何使用 if..else if 来判断一个数字是正数还是负数:

int myNum = 10; // Is this a positive or negative number?

if (myNum > 0)
  printf("该值为正数。");
else if (myNum < 0)
  printf("该值为负数。");
else
  printf("值为 0。");

三元运算符

还有一个简写 if else,它被称为三元运算符,因为它由三个操作数组成。它可用于用单行替换多行代码。它通常用于替换简单的 if else 语句:

变量 = (条件) ? 表达式真(true) : 表达式假(false);

原始示例:

int time = 20;
if (time < 18) {
  printf("再会!");
} else {
  printf("晚上好!");
}

简化示例:

int time = 20;
(time < 18) ? printf("再会!") : printf("晚上好!");

如果您想使用传统的 if...else 语句或三元运算符,这完全取决于您。