龙空技术网

C语言备忘录 - 04. 布尔类型与枚举类型

LIWY1024 21

前言:

今天咱们对“c语言的布尔类型是什么”大体比较关怀,同学们都需要剖析一些“c语言的布尔类型是什么”的相关知识。那么小编也在网摘上汇集了一些关于“c语言的布尔类型是什么””的相关资讯,希望朋友们能喜欢,同学们快快来了解一下吧!

一、布尔类型

在 C99 标准之前,C语言并没有布尔类型,所以 C语言判断真假时以 0 为假,非 0 为真:

#include <stdio.h>int main(){  /*    定义一个 int 类型变量,   0 为 false,非 0 为 true。   */  int flag = 1;  if (flag) {    printf("flag = true\n");  }  flag = 0;  if (!flag) {    printf("flag = false\n");  }  return 0;}

而 _Bool 类型是 C99 新增加的一种类型,但 _Bool 的本质依然仍是整数类型,但与一般整型不同的是,_Bool 变量只能赋值为 0 或 1,非 0 的值都会被存储为 1。

#include <stdio.h>int main(){  _Bool flag = 0;  printf("flag = %d\n", flag); // 0  flag = 1;  printf("flag = %d\n", flag); // 1  flag = 8;  printf("flag = %d\n", flag); // 1  return 0;}

C99 还提供了一个头文件 <stdbool.h> 定义了 bool 代表 _Bool,true 代表 1,false 代表 0。

#include <stdio.h>#include <stdbool.h>int main(){  bool flag = true;  if (flag) {    printf("flag = %d\n", flag);  }  flag = false;  if (!flag) {    printf("flag = %d\n", flag);  }  return 0;}
二、枚举类型

枚举是 C 语言中的一种基本数据类型,用于定义一组具有离散值的常量,它可以让数据更简洁,更易读。

定义一个枚举类型,需要使用 enum 关键字,后面跟着枚举类型的名称,以及用大括号 {} 括起来的一组枚举常量。每个枚举常量可以用一个标识符来表示,也可以为它们指定一个整数值,如果没有指定,那么默认从 0 开始递增。

enum 枚举名 {枚举元素1, 枚举元素2, ……};

1. 枚举定义

// 默认常量的值从 0 开始递增// MON=0, TUE=1, WED=2, THU=3, FRI=4enum DAY {  MON, TUE, WED, THU, FRI};// 为常量指定值,后面没指定的常量都在前面的基础上加 1// MON=1, TUE=2, WED=3, THU=4, FRI=5enum DAY {  MON=1, TUE, WED, THU, FRI};// 为常量指定值,前面没指定的常量从 0 开始递增// MON=0, TUE=1, WED=5, THU=6, FRI=7enum DAY {  MON, TUE, WED=5, THU, FRI};

2. 枚举变量定义

// 先定义枚举类型,再定义枚举变量enum DAY {  MON=1, TUE, WED, THU, FRI};enum DAY day;// 定义枚举类型的同时定义枚举变量enum DAY {      MON=1, TUE, WED, THU, FRI} day;// 省略枚举名称,直接定义枚举变量enum {      MON=1, TUE, WED, THU, FRI} day;

3. 枚举变量赋值与使用

#include <stdio.h>enum WeekDay {MON, TUE, WED, THU, FIR};enum Month {  FEB=2, MAR, APR, MAY} mon;int main(){  /* 枚举变量赋值 */   enum WeekDay today = MON;  printf("today is %d\n", today); // 0  /* 如果枚举内元素的数值是连续的,则可以遍历该枚举 */  for(mon=FEB; mon<=MAY; mon++) {    // 2 3 4 5    printf("Month is %d\n", mon);  }  enum {RED, GREEN=5, BLUE} color;  color = RED;  printf("color = %d\n", color); // 0  color = BLUE;  printf("color = %d\n", color); // 6  /* 枚举中常量也可以是 char,char的本质也是整数 */  enum {A='a', B='b'} flag;  flag = A;  printf("flag = %c\n", flag); // a  return 0;}

标签: #c语言的布尔类型是什么