澄清一个问题

oosky2004 2006-04-03 04:43:36
在做布尔判断的时候,不要和“真值”相比较,而要与“假值”做比较?

对这个说法不是很理解其中的道理!
望详讲!
...全文
145 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
吃狼的豆腐 2006-04-04
  • 打赏
  • 举报
回复
c里面只要不是0就是真
像负数都可能认为是真
eplanet 2006-04-04
  • 打赏
  • 举报
回复
一般情况之下布尔类(BOOL)型的定义如下

typedef int BOOL;
const int FALSE = 1;
const int TRUE = !FALSE;

如果需要单字节的布尔值,可以将数据类型换成char。但基本意思一样

非0即为真,如果和真值比较,将有无穷多个条件。所以只能和FALSE比较。

richard_2010 2006-04-03
  • 打赏
  • 举报
回复
非零为真,零为假,所以和“假值”能比较,那么多真值你怎么去,去和谁比较?
Wolf0403 2006-04-03
  • 打赏
  • 举报
回复
因为“假值”是 0,而“真值”是一切非 0 值,所以 == 1 返回 0 不代表 == 2 也返回 0,而你无法与所有非 0 值进行比较

——你,糊涂了吗?
firetoucher 2006-04-03
  • 打赏
  • 举报
回复
不知道你说的问题,是不是这个:
如果没有记错,在很多关于代码风格的文章里是这样写的。
因为对于“易读性”来说,比较清晰的说法是“它是假的”,而不是“它不是真的”。而且描述上也自然一点。
所以有人建议不要用if(!p),而是用if(p==0)。

FT
--
Anything one man can imagine, other men can make real.
hsilz 2006-04-03
  • 打赏
  • 举报
回复
在c里面只要不是0就是真值
虽然3不等于5
但是都代表真,
所以,应和假的比较。
接分
晨星 2006-04-03
  • 打赏
  • 举报
回复
没有上下文,看不懂。:(

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧