前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一练(85)

基础知识 | 每日一练(85)

作者头像
小林C语言
发布2019-08-19 11:11:40
3400
发布2019-08-19 11:11:40
举报

基础知识练习

士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭

学生:因为在 C 语言中所有的非零值都被看作 “真”, 是不是把 TRUE 定 义为 1 很危险?如果某个内置的函数或关系操作符 “返回” 不是 1 的 其它值怎么办?

小林:C 语言中的确任何非零值都都被看作真, 但这仅限于 “输入”, 也就是说, 仅限 于需要布尔值的地方。

内建操作符生成布尔值时, 可以保证为 1 或 0。因此, 这样 的测试 if((a == b) == TRUE) 能如愿运行 (只要 TRUE 为 1), 但显然这很傻。

事实上, 跟 TRUE 和 FALSE 的跟 TRUE 和 FALSE 的显示比较都不合适, 因为有些库函数 (如 isupper(), isalpha() 等) 在成功时返回非零值, 但不一定为1。(再说, 如果你认为 “if((a == b)== TRUE)”比 “if(a == b)”好, 为什么就此打住呢?

为什么不使用 “if(((a == b) == TRUE) == TRUE)” 呢?) 一般规则是只在向布尔变量赋值或函数参数中才使 用 TRUE 和 FALSE (或类似的东西), 或者用于函数的返回值, 但决不用于比较。

预处理宏 TRUE 和 FALSE (当然还有 NULL) 只是用于增加代码可读性, 而 不是因为其值可能改变。

尽管使用 TRUE 和 FALSE 这样的宏 (或者 YES 和 NO) 看上去更清楚, 布尔 值和定义在 C 语言中的复杂性让很多程序员觉得 TRUE 和 FALSE 宏不过更令人 迷惑, 因而更喜欢使用 1 和 0。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档