C语言关于值判断的一些注意事项

2021-11-30  本文已影响0人  itfitness
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;
}

因为通过这种方式判断的话,如果少写了个等于号程序是不会编译通过的


上一篇 下一篇

猜你喜欢

热点阅读