C语言-与0比较

整型
     应当将整型变量用“==”或“!= ”直接与0 比较。
     假设整型变量的名字为value ,它与零值比较的标准if 语句如下:
    if (0 == value)
    if ( 0 != value)

指针
    应当将指针变量用“==”或“!=”与NULL比较。指针变量的零值是“空”(记为NULL)。尽管NULL的值与0 相同,但是两者意义不
同。假设指针变量的名字为p ,它与零值比较的标准if 语句如下:

    if (NULL == p)
    遇到没有初始化的指针使用这个判断就不能准确的判断指针是否为NULL,所以定义指针时一定要初始化为NULL。

bool值
    不可将布尔变量直接与TRUE 、 FALSE或者1 、 0 进比较。根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE )。 TRUE 的值究竟是什么并没有统⼀的标准。
    假设布尔变量名字为flag,它与零值比较的标准if 语句如下:
    if (flag) // 表示flag为真
    if (!flag) // 表示flag为假

    其它的用法都属于不良风格,例如:
    if (flag == true)
   if (flag == 1)
   if (flag == false)
   if (flag == 0)


float类型
    不可将浮点变量用“==”或“!= ”与任何数字比较。无论是float 还是double 类型的变量,都有精度限制,应该设法转化成“>=”或“<=”形式。
    假设浮点变量的名字为x ,应当为
    if ((x >= -EPSINON) && (x <= EPSINON))
    其中EPSINON 是允许的误差(即精度)。
    如果不知道x的精度值呢?

#define EPSINON 0.001
	float x=0.00001;

	if ((x >= -EPSINON) && (x <= EPSINON))
		printf("==\n");
	else
		printf("!=\n");

变量放在"=="后面
    防止在写代码时少敲一个"="导致出现对变量赋值语句,出现不可控或者达不到自己的编码意图;变量放在"=="后面可以在少敲一个"="在编译时报错误及时的发现和改正。

猜你喜欢

转载自blog.csdn.net/TSZ0000/article/details/82869843