设为首页 加入收藏

TOP

C语言没有布尔类型的说明
2013-01-01 14:58:38 来源: 作者: 【 】 浏览:465
Tags:语言 没有 布尔 类型 说明

  C语言的布尔类型

  在C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。所以我们通常使用逻辑变量的做法:

  //定义一个int类型变量,当变量值为0时表示false,值为1时表示true

  int flag;

  flag = 0;

  //……

  flag = 1;

  if( flag )

  {

  //……

  }

  但这种做法不直观,而且没有明确flag一定是布尔值。所以我们又借助C语言的宏定义:

  //宏定义布尔类型

  #define BOOL int

  #define TRUE 1

  #define FALSE 0

  //定义一个布尔变量

  BOOL flag = FALSE;

  这种方法虽然直观,但依然是换汤不换药,变量flag在编译器看来依然是int类型。

  新版本总会改进一些不好的地方,所以在最新的C语言标准(C99)解决了布尔类型的问题。C99提供了_Bool 型,所以布尔类型可以声明为 _Bool flag.

  _Bool依然仍是整数类型,但与一般整型不同的是,_Bool变量只能赋值为0或1,非0的值都会被存储为1.

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

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

  #include <stdbool.h>

  #include <stdio.h>

  //计算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;

  }

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言的谜题 下一篇关于C语言函数调用的一些理解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: