回首页 回首页 ◎ 设为首页  
◎ 收藏本站  
◎ 给我留言  
  
  首 页  C/C++教程  C++之父的FAQ  C/C++动向  C/C++源代码  C/C++误区  Unix/Linux  下载中心  乱七八糟  蚂蚁的Blog  
  当前位置:首 页 >> C/C++教程 >> C 语言基础教程 >> 38. 布尔类型再探讨
最 近 更 新
54. goto 语句
53. switch 语句推荐
52. continue 和 break
51. 条件运算符(?:)
50. if 语句嵌套推荐
49. 逻辑运算符推荐
48. 在循环中使用 if 语句推荐
47. if 和 else 连用推荐
46. if 语句
45. 循环应用实例 2
最 新 推 荐
53. switch 语句推荐
50. if 语句嵌套推荐
49. 逻辑运算符推荐
48. 在循环中使用 if 语句推荐
47. if 和 else 连用推荐
44. 循环应用实例 1推荐
43. 循环嵌套推荐
40. for 循环推荐
37. 关系运算符推荐
36. while 循环推荐
热 门 排 行
2. 第一个 C 程序推荐
31. 预处理指令 #define..推荐
1. C 语言简介
11. 基本数据类型:整型..推荐
24. 运算符的优先级和结..推荐
5. 如何编写函数
30. 字符串字面量推荐
13. 标识符命名规则
36. while 循环推荐
7. 第三个 C 程序推荐
站 内 搜 索

Web stdcpp.cn
关键词

搜索方式

搜索范围

精确匹配
广 告

38. 布尔类型再探讨


来源:蚂蚁的 C/C++ 标准编程 作者:antigloss 等级:一般
发布于2006-07-31 18:51 被读2374次 【字体:

    过去,我们一般使用 int 型变量表示真/假。C99 新增了 _Bool 类型(布尔类型)用于表示真/假。_Bool 类型的变量的值只能是 0 或者 1。无论赋予任何非零值给 _Bool 类型的变量,它的值都只会是 1。例如:

        _Bool i_am_true = 15;          // i_am_true 的值是 1
        _Bool am_i_true = (var > 15);  // 当 var 大于 15 时,am_i_true 的值为 1

顺带一提,包围 var > 15 的括号要不要都一样,因为 > 的优先级比 = 高。不过,使用括号可以使代码的意思更加清晰明了。对于各种运算符的优先级,其实没有必要死记硬背,了解一下就可以了。实在不记得到底哪个运算符的优先级更高的时候,就使用括号吧。此外,定义 _Bool 变量时,最好选一个意思明确的名字,让人一看就知道它是做什么用的。例如:

        _Bool no_error = 1;
        while ( no_error )
        {
            /*    ... ...       */
            /* if error happens */
            /*    no_error = 0; */
            /*    ... ...       */
        }

    包含标准头文件 stdbool.h 后,我们可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0 。例如:

        bool no_error = true;
        no_error = false;

这么做是为了和 C++ 兼容。注意,stdbool.h 是 C99 新增的。

    使用文本编辑器打开 stdbool.h,一般都会找到这样三句

        #define bool    _Bool
        #define true    1
        #define false   0

这就是为什么包含 stdbool.h 后可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0 。

参考资料:C Primer 5th Edition
          The C Programming Language 2nd Edition
          C99 标准

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。



相关专题:C 语言数据类型
30. 字符串字面量
29. 数组基础(下)

上一篇:37. 关系运算符
下一篇:39. 逗号运算符

共有评论 6 条 网友评分 1分 查看全部评论

游客:Damnation
评分:3
我的天那~~~
那么难看,难写的类型名_Bool???还好有macro啊~
游客:qustmath
评分:0
继续啊,等着学呢
游客:独行狼
评分:0
感谢楼住的一番美意了,继续发吧,小弟我学的正带劲呢!
游客:fangcos
评分:0
大哥,继续发吧,我等得好苦啊!
万分感谢啊!
游客:chaifengdi
评分:0
_Bool i_am_true = 15 是不是给i_am_true赋什么值i_am_true的值都是1呢,char和float的呢?那要是赋0呢?
游客:antigloss
评分:0
只要是赋非零值,那 i_am_true 的值都是 1。赋零那当然是 0 哦。

查看全部评论

【发表评论】 评分:1分 2分 3分 4分 5分


验证码:

Powered By Www.Xydw.COM Ver1.14 管理
Copyright © 2005-2006 蚂蚁的 C/C++ 标准编程 All Right Reserved. XCMS
粤ICP备06014124号   站长:Antigloss