目录
布尔类型变量
假设布尔变量名字为flag,其与零值比较的标准if语句是:
#include<iostream>
#include <stdio.h>
int main()
{
bool flag = false;
if (flag) { printf("good\n"); }; //非标准风格:if (flag == true) { printf("good\n"); };
if (!flag) { printf("well\n"); }; //非标准风格:if (flag == false) { printf("good\n"); };
system("pause");
return 0;
}
这种风格,根据布尔类型的语义,零值为“假”(false),任何非零值为“真”(true)。 之所以将这种风格的编写方式定为标准,是因为在不同的平台上,关于True的定义并不统一。比如,在Visual studio里面,真定义为1,但在Visual basic里面,真则被定义为-1。
整型变量
假设整型变量的名字为value,其与零值比较的标准if语句是:
#include<iostream>
#include <stdio.h>
int main()
{
int value = 1;
if (value == 0) { printf("good\n"); }; //非标准风格:if(value);
if (value != 1) { printf("well\n"); }; //非标准风格:if(!value);
system("pause");
return 0;
}
上面的注释部分,是定义整型类型的if语句的时候,常用的风格,这样定义的话,很容易让读者将定义的数据和bool类型所定义的数据混淆。
浮点类型变量
假设浮点类型变量的名字为x,其与零值(0.0)比较的标准if语句是:
#include<iostream>
#include <stdio.h>
int main()
{
float x = 1.0;
float EPSINON = 0.001;
if ((x >= -EPSINON)&&(x <= EPSINON)) { printf("good\n"); }; // 非标准风格:if(x == 0.0);
if ((x < -EPSINON)||(x > EPSINON)) { printf("well\n"); }; //非标准风格:if(x != 0.0);
system("pause");
return 0;
}
这里需要说明清楚的是,在常用的数据类型里面,float和double这两种数据类型,都是有精度限制的,所以,在遇到用浮点类型的比较或者判断问题的时候,一定要避免用形如:"=="、"!="这类的比较,因为,浮点数据小数点后面跟的数字太多了,找两个是完全相同的很难,当然,如果每次都要求完全相同,那需要规定的位数就太多了!
指针变量类型
指针变量p和零值比较:
#include<iostream>
#include <stdio.h>
int main()
{
int* p = NULL;
if (p == NULL) { printf("good\n"); }; //非标准风格:if(p == 0);
if (p != NULL) { printf("well\n"); }; //非标准风格:if(p != 0);
system("pause");
return 0;
}
对于指针变量来说,零值就是"NULL",这俩所表示的意义是完全不同的,如果p和NULL进行比较,强调p是指针变量;如果p和0比较,很容易让人以为p是一个整型变量。