Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1975112
  • 博文数量: 424
  • 博客积分: 1291
  • 博客等级: 中尉
  • 技术积分: 2682
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-13 01:34
个人简介

linux oracle 网络安全 编程

文章分类

全部博文(424)

文章存档

2016年(22)

2015年(53)

2014年(57)

2013年(242)

2012年(50)

分类: C/C++

2012-12-26 23:17:07

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还提供了一个头文件 定义了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;
}
复制代码
阅读(1855) | 评论(4) | 转发(2) |
给主人留下些什么吧!~~

nuoyazhou1102012-12-28 16:18:54

txgc_wm: .....
11111111111

nuoyazhou1102012-12-28 16:15:10

txgc_wm2012-12-27 12:45:08

hanhuili2012-12-27 12:37:17

最新的C语言标准(C99)???
最新的标准?