C 语言编程教程

C 语言 - 首页

C 语言基础

C 语言 - 概述 C 语言 - 特性 C 语言 - 发展历史 C 语言 - 环境设置 C 语言 - 程序结构 C 语言 - Hello World C - 编译过程 C - 注释 C - 标记 C - 关键字 C - 标识符 C - 用户输入 C - 基本语法 C - 数据类型 C - 变量 C - 整数提升 C - 类型转换 C - 类型转换 C - 布尔值

C 语言中的常量和文字

C - 常量 C - 字面量 C - 转义序列 C - 格式说明符

C 语言中的运算符

C - 运算符 C - 算术运算符 C - 关系运算符 C - 逻辑运算符 C - 位运算符 C - 赋值运算符 C - 一元运算符 C - 递增和递减运算符 C - 三元运算符 C - sizeof 运算符 C - 运算符优先级 C - 其他运算符

C 语言中的决策

C - 决策 C - if 语句 C - if...else 语句 C - 嵌套 if 语句 C - switch 语句 C - 嵌套 switch 语句

C 语言中的循环

C - 循环 C - While 循环 C - For 循环 C - Do...while 循环 C - 嵌套循环 C - 无限循环 C - Break 语句 C - Continue 语句 C - goto 语句

C 语言中的函数

C - 函数 C - Main 函数 C - 按值调用函数 C - 按引用调用函数 C - 嵌套函数 C - 可变参数函数 C - 用户定义函数 C - 回调函数 C - return 语句 C - 递归

C 语言中的作用域规则

C - 作用域规则 C - 静态变量 C - 全局变量

C 语言中的数组

C - 数组 C - 数组的属性 C - 多维数组 C - 将数组传递给函数 C - 从函数返回数组 C - 可变长度数组

C 语言中的指针

C - 指针 C - 指针和数组 C - 指针的应用 C - 指针运算 C - 指针数组 C - 指向指针的指针 C - 将指针传递给函数 C - 从函数返回指针 C - 函数指针 C - 指向数组的指针 C - 指向结构体的指针 C - 指针链 C - 指针 vs 数组 C - 字符指针和函数 C - NULL 指针 C - void 指针 C - 悬垂指针 C - 解引用指针 C - Near、Far 和 Huge 指针 C - 指针数组的初始化 C - 指针与多维数组

C 语言中的字符串

C - 字符串 C - 字符串数组 C - 特殊字符

C 语言的结构体和联合

C - 结构体 C - 结构体和函数 C - 结构体数组 C - 自引用结构 C - 查找表 C - 点 (.) 运算符 C - 枚举(或 enum) C - 结构填充和打包 C - 嵌套结构 C - 匿名结构和联合 C - 联合 C - Bit 位字段 C - Typedef

C 语言中的文件处理

C - 输入和输出 C - 文件 I/O(文件处理)

C 语言中的预处理器

C - 预处理器 C - #pragma 编译指示 C - 预处理器操作符 C - 宏 C - 头文件

C 语言中的内存管理

C - 内存管理 C - 内存地址 C - 存储类

C 其他主题

C - 错误处理 C - 可变参数 C - 命令执行 C - 数学函数 C - static 静态关键字 C - 随机数生成 C - 命令行参数

C 语言编程资源

C语言问题与解答答案 C语言快速指南 C语言速查表 C语言实用资源 C语言讨论


C 语言中的布尔值

intcharfloat 类型不同,ANSI C 标准没有内置或主布尔类型。布尔值或 bool 数据通常指可以保存两个二进制值之一的数据:真或假(或"是/否"、"开/关"等)。即使 C 语言中没有 bool 类型,您也可以借助 enum 类型实现布尔值的行为。

符合 C99 或更高版本标准的新版 C 编译器支持 bool 类型,该类型已在头文件 stdbool.h 中定义。

使用枚举在 C 语言中实现布尔类型

枚举类型将用户定义的标识符赋给整型常量。我们可以定义一个枚举类型,以 true 和 false 作为标识符,其值分别为 1 和 0。

示例

1 或任何其他非 0 的数字表示真,而 0 表示假。

#include <stdio.h>

int main (){

   enum bool {false, true};
   enum bool x = true;
   enum bool y = false;

   printf ("%d
", x);
   printf ("%d
", y);
}

输出

运行代码并检查其输出 −

1
0

typedef enum as BOOL

为了更简洁,我们可以使用 typedef 关键字,通过名称 BOOL 来调用 enum bool。

示例 1

请看以下示例 -

#include <stdio.h>

int main(){

   typedef enum {false, true} BOOL;

   BOOL x = true;
   BOOL y  = false;

   printf ("%d
", x);
   printf ("%d
", y);
}

这里,你也会得到相同的输出 -

输出

1
0

示例 2

我们甚至可以在决策语句或循环语句中使用枚举常量 -

#include <stdio.h>

int main(){

   typedef enum {false, true} BOOL;

   int i = 0;

   while(true){
      i++;
      printf("%d
", i);

      if(i >= 5)
         break;
   }
   return 0;
}

输出

运行此代码时,将产生以下输出 -

1
2
3
4
5

使用 #define 定义布尔值

#define 预处理指令用于定义常量。我们可以使用它来定义布尔常量,FALSE 为 0,TRUE 为 1。

示例

请看以下示例 -

#include <stdio.h>

#define FALSE 0
#define TRUE 1

int main(){

   printf("False: %d 
 True: %d", FALSE, TRUE);

   return 0;
}

输出

运行代码并检查其输出 −

False: 0 
 True: 1

stdbool.h 中的布尔类型

C 语言的 C99 标准引入了 stdbool.h 头文件。该文件包含 bool 类型的定义,该类型实际上是 _bool 类型的 typedef 别名。它还定义了宏 true,其展开为 1,以及宏 false,其展开为 0。

示例 1

我们可以按如下方式使用 bool 类型 -

#include <stdio.h>
#include <stdbool.h>

int main(){

   bool a = true;
   bool b = false;

   printf("True: %d
", a);
   printf("False: %d", b);

   return 0;
}

输出

执行此代码后,您将获得以下输出 -

True: 1
False: 0

示例 2

我们也可以在逻辑表达式中使用 bool 类型变量,如下例所示 -

#include <stdio.h>
#include <stdbool.h>

int main(){
  
   bool x;
   x = 10 > 5;
  
   if(x)
      printf("x is True
");  
   else
      printf("x is False
");
    
   bool y;
   int marks = 40;
   y = marks > 50;
  
   if(y)
      printf("Result: Pass
");  
   else
      printf("Result: Fail
");  
}

输出

运行代码并检查其输出 −

x is True
Result: Fail

示例 3

让我们借助布尔变量实现一个 while 循环 -

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main(void){

   bool loop = true;
   int i = 0;
    
   while(loop){
      i++;
      printf("i: %d 
", i);
    
      if (i >= 5)
         loop = false;
   }
   printf("Loop stopped!
");
   return EXIT_SUCCESS;
}

输出

运行此代码时,将产生以下输出 -

i: 1
i: 2
i: 3
i: 4
i: 5
Loop stopped!