C 布尔值


布尔值

在编程中,您经常需要一种只能具有两个值之一的数据类型,例如:

  • 是/否
  • 开关
  • 真假

为此,C 有一个bool数据类型,称为布尔值

布尔值代表的值是true或者false


布尔变量

在C中,booltype 不是内置数据类型,例如int或者char

它是在 C99 中引入的,你必须Import下面的头文件来使用它:

#include <stdbool.h>

布尔变量声明为bool关键字,只能取值true或者false:

bool isProgrammingFun = true;
bool isFishTasty = false;

在尝试打印布尔变量之前,您应该知道布尔值以整数形式返回:

  • 1(或任何其他非 0 的数字)代表true
  • 0代表false

因此,您必须使用%d用于打印布尔值的格式说明符:

示例

// Create boolean variables
bool isProgrammingFun = true;
bool isFishTasty = false;

// Return boolean values
printf("%d", isProgrammingFun);   // Returns 1 (true)
printf("%d", isFishTasty);        // Returns 0 (false)
亲自试一试 »

然而,更常见的是通过以下方式返回布尔值比较值和变量。


比较值和变量

比较值在编程中很有用,因为它可以帮助我们找到答案并做出决策。

例如,您可以使用比较运算符, 如那个大于>) 运算符,用于比较两个值:

示例

printf("%d", 10 > 9);  // Returns 1 (true) because 10 is greater than 9
亲自试一试 »

从上面的例子中,你可以看到返回值是一个布尔值(1)。

您还可以比较两个变量:

示例

int x = 10;
int y = 9;
printf("%d", x > y);
亲自试一试 »

在下面的示例中,我们使用等于==) 运算符来比较不同的值:

示例

printf("%d", 10 == 10); // Returns 1 (true), because 10 is equal to 10
printf("%d", 10 == 15); // Returns 0 (false), because 10 is not equal to 15
printf("%d", 5 == 55);  // Returns 0 (false) because 5 is not equal to 55
亲自试一试 »

您不仅限于比较数字。您还可以比较布尔变量,甚至特殊结构,例如数组(您将在后面的章节中了解更多):

示例

bool isHamburgerTasty = true;
bool isPizzaTasty = true;

// Find out if both hamburger and pizza is tasty
printf("%d", isHamburgerTasty == isPizzaTasty);
亲自试一试 »

请记住包括<stdbool.h>使用时的头文件bool变量。


现实生活中的例子

让我们考虑一个"real life example",我们需要查明一个人是否达到投票年龄。

在下面的示例中,我们使用>=比较运算符来确定年龄是否 (25) 是大于或者等于投票年龄限制,设置为18:

示例

int myAge = 25;
int votingAge = 18;

printf("%d", myAge >= votingAge); // Returns 1 (true), meaning 25 year olds are allowed to vote!
亲自试一试 »

很酷,对吧?更好的方法(因为我们现在正在努力)是将上面的代码包装在一个if...else语句,因此我们可以根据结果执行不同的操作:

示例

输出#"Old enough to vote!"如果myAge大于或等于18。否则输出"Not old enough to vote.":

int myAge = 25;
int votingAge = 18;

if (myAge >= votingAge) {
  printf("Old enough to vote!");
} else {
  printf("Not old enough to vote.");
}
亲自试一试 »

布尔值是所有比较和条件的基础。

您将了解更多有关状况 (if...else在下一章中。