1.浮点类型的数据判断
当我们对浮点类型的数据进行判断的时候可能会出现如下情况,原因是浮点类型的数值本来就是一个大概的值并没有那么精确。
代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
float a = 10.00002;
float c = a - 10 - 0.00002;
if(c == 0.0){
printf("C的值为0\n");
}else{
printf("不为0,c的值为:%lf\n",c);
}
return 0;
}
结果
这时候我们就需要进行一个大概的判断如下所示
代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
float a = 10.00002;
float c = a - 10 - 0.00002;
if(c >= -0.00001 && c <= 0.00001){
printf("C的值为0\n");
}else{
printf("不为0,c的值为:%lf\n",c);
}
return 0;
}
结果
2.指针类型判断
通常我们在使用指针类型的变量时会先判断是否为NULL,这时我们可能会写成如下所示的代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
if(p == NULL){
printf("p为NULL\n");
}else{
printf("p不为NULL\n");
}
return 0;
}
但是可能我们代码敲的太快可能会写成p = NULL如下所示
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
if(p = NULL){
printf("p为NULL\n");
}else{
printf("p不为NULL\n");
}
return 0;
}
这样的话执行结果就不一样了,我们可以看到输出了p不为NULL,这是因为p= NULL本身并没有错
因此为了避免这种情况,我们可以写成如下的形式
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
if(NULL == p){
printf("p为NULL\n");
}else{
printf("p不为NULL\n");
}
return 0;
}
因为通过这种方式判断的话,如果少写了个等于号程序是不会编译通过的
网友评论