if 语句中关于0判断的三个细节问题

1布尔值判断

        布尔值bool,是一种常见的计算机概念,他只有两个值,true和flase,一般在计算机中规定true值为1,flase值为0。但在早期的c89,c90语言版本中却没有给出bool类型,在最新的c99中给出了_bool类型,包含在stdbool.h头文件中。

我们可以输出它们的值观察。

我们可以观察他的定义

        然后我们看几段代码

#include <stdio.h>
#include<stdbool.h>
int main()
{
	bool a = true;
	bool b = false;

	if (a == 1)
	{
		printf("1\n");
	}
	if (a == true)
	{
		printf("2\n");
	}
	if (a)
	{
		printf("3");
	}
	return 0;
}



2浮点型比较

        首先我们要了解数据在内存中是以二进制数据保存的,但我们日常使用的是十进制,计算机必然涉及到了进制之间的转换。

        下面介绍一种十进制小数转二进制的方法

       用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,整数部分为1,此时0或1为二进制的最后一位。或者达到所要求的精度为止。

        如:0.625=(0.101)B
  0.625*2=1.25======取出整数部分1
  0.25*2=0.5========取出整数部分0
  0.5*2=1==========取出整数部分1

但我们当然会有无限的情况

        如:0.625=(0.101)B
  0.625*2=1.25======取出整数部分1
  0.25*2=0.5========取出整数部分0
  0.5*2=1==========取出整数部分1

。。。。。。。。。。。。。。。。。。。

由此便有了误差

我们可以通过程序来观察这一现象

        换句话说,如果我们判断 (x-0.9)==0.1,这个表达式返回的布尔值是真是假?

我们运行下看看。

        那我们如何判断浮点数相等呢?我们仔细观察,

虽然上面储存结构不相同,但十分接近,或者说他们相差极小的d就是相等的,那我们便可用d帮助判断

其中d就是误差,只要在误差允许范围内,便可以判定二者相同.

3指针与NULL

        NULL在c语言中是个void *类型的值

下面我们看段代码

在第三种方式下我们还有个细节

我们可以将NULL写在左边,防止可能漏写一个=,程序也不会报错,把他当作赋值语句执行。减少可能出现的错误。

        感谢大家观看到现在,这就是三个if判断的细节,更多的编程规范,推荐大家看林锐博士的《高质量的c++编程规范》。大家喜欢的点点赞,收藏关注

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值