讲解一下C 语言布尔类型

C语言就没有真正的布尔类型,布尔类型实际上是用数值型(int,float,char等)表示的,不能自动打印为true或者false,只能自己写代码实现。

C 语言标准(C89) 没有定义布尔类型,如果你使用 true 和 false,会出现以下错误:

infinite.c:5:12: error: use of undeclared identifier 'true'
   while (true) {

1 error generated.
make: *** [infinite] Error 1

我们可以借助 C 语言的宏定义来哦设置:

//宏定义布尔类型
#define BOOL int
#define TRUE 1
#define FALSE 0

//定义一个布尔变量
BOOL flag = FALSE;

也可以通过枚举类来定义:

typedef enum
{
   true=1, false=0
}bool;

实例

#include

//计算n!,n的值在main中定义
int main(void)
{
   int n = 10;    //计算叠乘数
   int sum = 1; //用来存放叠乘的结果
   typedef enum
   {
       true=1, false=0
   }bool;
   bool flag = false;    //叠乘标记
   
   int num = n;    //循环次数
   while( !flag )
   {
       sum = sum * (num--);
       //当num=1时结束循环
       if( num == 1)
       {
           flag = true;
       }
   }
   printf ("%d的叠乘值为 %d \n", n, sum);
   return 0;
}

输出结果为:

10的叠乘值为 3628800

C99 还提供了一个头文件 定义了 bool 代表 _Bool,true 代表 1,false 代表 0。只要导入 stdbool.h ,就能非常方便的操作布尔类型了。

实例

//导入 stdbool.h 来使用布尔类型
#include
#include

//计算n!,n的值在main中定义
int main(void)
{
   int n = 10;    //计算叠乘数
   int sum = 1; //用来存放叠乘的结果
   bool flag = false;    //叠乘标记
   
   int num = n;    //循环次数
   while( !flag )
   {
       sum = sum * (num--);
       //当num=1时结束循环
       if( num == 1)
       {
           flag = true;
       }
   }
   printf ("%d的叠乘值为 %d \n", n, sum);
   return 0;
}

输出结果为:

10的叠乘值为 3628800

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/4403.html

(0)
晴川运维晴川运维
上一篇 2025年6月8日
下一篇 2025年6月8日

相关推荐

  • Swift中自定义操作符

    自定义操作符和操作符重载是一个非常强大的功能,可以让我们构建非常有趣的解决方案。它可以让我们降低呈现型函数调用的冗长,这可能会给我们清洁代码 前言 很少有Swift功能能和使用自定…

    Linux系统 2025年6月29日
  • 详解shell if 判断

    UNIX Shell 里面比较字符写法 -eq 等于; -ne 不等于; -gt 大于; -lt 小于 ; -le 小于等于; -ge 大于等于; -z 空串; -n 非空串; =…

    Linux系统 2025年7月9日
  • 简单介绍一下DevOps

    DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作…

    Linux系统 2025年7月4日
  • 详解Linux ncal命令使用方法

    在Linux系统中,cal和ncal命令都用御用显示日历,但是这两个命令不经常使用,尤其对ncal命令更不了解,本篇文章重点为大家讲解一下ncal命令使用方法。 ncal命令 nc…

    Linux系统 2025年7月1日
  • 讲解一下ES6 Promise用法

    所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。 ES6 规定,Promise对象是一个构造函数,用来生成Promise实例。…

    Linux系统 2025年6月13日
  • 在 Linux 上使用开源软件创建 SDN

    使用开源路由协议栈 Quagga,使你的 linux 系统成为一台路由器。 网络路由协议分为两大类:内部网关协议和外部网关协议。路由器使用内部网关协议在单个自治系统内共享信息。如果…

    Linux系统 2025年9月20日
  • 加固Redis服务安全具体方法

    Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统(区别于MySQL的二维表格的形式存储。)。和Memcache类似,…

    Linux系统 2025年6月8日
  • Aria2下载提速具体方法

    Aria2 是一个多平台轻量级,支持 HTTP、FTP、BitTorrent 等多协议、多来源的命令行下载工具。Aria2 可以从多个来源、多个协议下载资源,最大的程度上利用了你的…

    Linux系统 2025年10月9日
  • 详解日志收集处理工具ELK

    ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处…

    Linux系统 2025年7月7日
  • 详解Linux内存、Swap、Cache、Buffer

    在Linux系统中 buffer和cache是内存上分出来的空间,swap分的是磁盘上的空间,下面重点为大家讲解一下Linux内存、Swap、Cache、Buffer。 1. 通过…

    Linux系统 2025年6月15日

发表回复

登录后才能评论