1.bool表示布尔型变量,也就是逻辑型变量的定义符,bool类型用的很少,一般情况下我们都使用整型变量来充当一个bool变量的角色;不可将布尔变量直接与TRUE、FALSE或者1、0进行比较。
首先看一个例子:
int flat;
if(flat==TURE){....}
if(flat==FALSE){....}
这个例子是错的,因为在C语言中bool的含义是:0表示假,非0表示真;但是flat是一个整数,可以被赋予为2,3等的非0值,而我们所知道的TURE,FALSE这些标识符被定义为一个固定的值使用if(fale==TURE)的语法就会出现错误。比如:flat本来是5,表示真,但是和TURE(1)比较的时候表达式为假。
正确的写法为:
int flat;
if(flat){....}
if(flat){....}
2.一个整型变量不表示真假,应当将整型变量用“==”或“!=”直接与0比较,所以比较真假时为:
int num=10;
if(num==0){
printf("num==0\n");
}
此时if(num==0)不要写成if(num),因为if(num)括号里面为零此段代码不执行。
3.指针与零比较时应当将指针变量用“==”或“!=”与NULL比较,指针变量的零值是“空”(记为NULL)
int *p=NULL; //变量初始化,把指针变量设置为空,与p指向的地址内容无关
if(p!=NULL){ //指针变量和零比较必须和NULL比较,也不能写成if(!p)容易让人误解p是布尔变量
*p=20;
}