目录:
布尔变量与零值比较
整型变量与零值比较
浮点变量与零值比较
指针变量与零值比较
布尔变量与零值比较
规则:不可将布尔值直接与0,1或者true,false比较
代码示例:
bool flag;
if (flag) //表示flag为真
if (!flag) //表示flag为假
//不良风格,编程时不要使用
if (flag == 0)
if (flag == 1)
if (flag == false)
if (flag == true)
整型变量与零值比较
规则:应当将整形变量用“==”或“!=”直接与0比较
代码示例:
int num;
if (num == 0)
if (num != 0)
//不可模仿bool值的比较方式以免被当成是bool变量
if (num)
if (!num)
浮点变量与零值比较
规则:不可将浮点型变量用“==”或者“!=”与任何数字比较
不论是float变量还是double变量,都有精度限制。所以一定要避免将浮点型变量用“==”或“!=”与数字比较,应该设法换成“>=”或者“<=”形式。
代码示例:
float epsinon = 0.000001; //设定允许的误差
float x;
if (x == 0.0) //隐含错误的比较方法
if ((x >= -epsinon) && (x <= epsinon)) //正确的比较方法
指针变量与零值比较
规则:应当将指针变量用“==”或者“!=”与NULL比较
指针变量的零值是“空”(记为NULL),尽管NULL与0值相同,但是两者意义不同。
代码示例:
char ptr;
//显示比较,强调ptr是指针变量
if (ptr == NULL)
if (ptr != NULL)
//不要写成
if (ptr == 0)
if (ptr != 0)
if (ptr)
if (!ptr)
各种零值比较: