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++编程规范》。大家喜欢的点点赞,收藏关注