C语言中零与比较各“零”值的

在C语言中0.0、false、\0、NULL是于0相等的吗?

1. 0.0与0的比较

首先便是浮点0于0的比较,由于浮点数在存储的时候会丢失精度所以不可以直接于0经行比较

 这毫无疑问是相等的

2. bool类型中false与0的比较

bool类型中false表示假true表示为真

而在计算机语言中0为假,那么这里的false与0是相等的吗?

我们可以用if语句来判断一下false是否等于0

 这里指的注意的是在C99标准中C语言引入bool类型,要使用它需要头文件<stdbool.h>

发现false与0值是相等的,转定义后发现C语言中false的本质就是0

3. '\0'与0的比较

\0是字符串的结束标识,我们经常能听到\0的本质就是0,可事实真的如此吗?\0真的等价于0吗?

 经过验证发现\0确实等价于0,可为什么呢? 

 在ASCLL表中我们发现\0的ascll码值就是0,只不过在0在转义字符中被解读成了‘\0’,'\0'它的本质依旧是0。所以用if进行比较时才会相等。

4. NULL与0的比较

NULL在C语言中表示”空值“,那它NULL也与0像等吗?

 经过对比NULL也于0相同,转到定义发现NULL的本质就是0强转成了void类型

它们真的是相等的吗?

可它们真的是相等?

数据在内存中是以二进制补码的形式存储的,它们的本质都是二进制的0被解读成了其他类型而已。可以说它们的二进制补码是相同的,但严格来说它们是不同的类型不能经行比较

如:字符0于数字48它们的二进制补码都是110000,所以if语句才会判定其相等

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值