首先,进行的是if 语句的简要分析。if语句是最简单也是最常用的语句,然而很容易很忽视,其中的细节:要明确几种常见的数据类型以及各类型数据的定义范围;
具体分析如下:
1、 用if语句进行布尔变量与零值的比较。
**这里需要注意的是不可将布尔变量直接与TRUE、FALSE或者0、1进行比较,本身就表示事件的真与假,根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。
假设布尔变量名字为flag,它与零值比较的标准if语句如下:
If(flag) //表示flag为真;
If(!flag) //表示flag为假;
另有常用到的不良风格,或者说是不标准表达方式如下:
if( flag == TRUE )
if( flag == 1 )
if( flag == 0 )
if( flag ==FALSE )
2、 整形变量与零值进行比较
对于整形变量与零值进行比较是经常会出现布尔型的表达方式,因此需要注意的是应当将整型变量用“==”或者“!=”直接与“0”比较作为判断条件。假设整型变量的名字为value,那么他与零值的比较的参考if语句如下:
if( value == 0 ) ……
if( value != 0)……
经常容易犯的错误如下:
if ( value )
if (!value )
3、 浮点变量与零值的比较
无论是float还是double类型的变量,都有精度,都属于浮点变量,不可将浮点变量用“==”或者“!=”与任何数字进行比较,而是应该设法将语法转换成“>=”或者“<=”的形式。
假设浮点变量的名字为f_value,在实际应用中将
if ( f_value == 0.0 )
转化为
If( (f_value >=0.09) && (f_value <= 0.11) )
4、指针变量与零值的比较
指针当中的零值有以下两种理解方式:指针地址为零和空指针,设指针变量为*add,则对于指针的地址为零时可与表示为:
if ( add == 0 )
对于空指针式,此时的表示方式则应更改为:
If ( add == NULL ) 或者
If ( add != NULL )
最后,对if语句进行补充说明:
1、如何看待语句 if(NULL == p)?
事实上该语句等同于 if(p ==NULL )在书写过程中很容易将“p == NULL” 书写成“p = NULL”,在编译器中if(p =NULL) 是合法的,但if(NULL =p )编译时将会出错,因为NULL不能被赋值。这能有效避免由于书写错误造成不必要的麻烦。
2、正确书写if/else/return 的组合语句:
错误的书写习惯如下:
if (condition)
return a;
return b;
正确的书写方式为:
If( condition )
Return a;
Else
Return b;
或者更改成条件语句:
Return(condition ? a : b );