1. 程式人生 > >分別寫出BOOL,int,float,指標型別的變數a與“零”的比較語句

分別寫出BOOL,int,float,指標型別的變數a與“零”的比較語句

BOOL :  if ( !a ) or if(a)
int :   if ( a == 0)
float : const EXPRESSION EXP = 0.000001
  <span style="white-space:pre">	</span>if ( a < EXP&& a >-EXP)
pointer : if ( a != NULL) or if(a == NULL)

不可將浮點變數用“==”或“!=”與數字比較,應該設法轉化成“>=”或“<=”此類形式。 

EPSINON應該是一個很小的值吧   因為計算機在處理浮點數的時候是有誤差的,所以判斷兩個浮點數是不是相同,是要判斷是不是落在同一個區間的,這個區間就是 

[-EPSINON,EPSINON]   EPSINON一般很小,10的-6次方以下吧,具體的好像不確定的,和機器有關。

剖析:

  考查對0值判斷的“內功”,BOOL型變數的0判斷完全可以寫成if(var==0),而int型變數也可以寫成if(!var),指標變數的判斷也可以寫成if(!var),上述寫法雖然程式都能正確執行,但是未能清晰地表達程式的意思。 
 一般的,如果想讓if判斷一個變數的“真”、“假”,應直接使用if(var)、if(!var),表明其為“邏輯”判斷;如果用if判斷一個數值型變數(short、int、long等),應該用if(var==0),表明是與0進行“數值”上的比較;而判斷指標則適宜用if(var==NULL),這是一種很好的程式設計習慣。


  浮點型變數並不精確,所以不可將float變數用“==”或“!=”與數字比較,應該設法成“>=”或“<=”形式。如果寫成if(x == 0.0),則判為錯,得0分。