1. 程式人生 > >C語言-與0比較

C語言-與0比較

整型      應當將整型變數用“==”或“!= ”直接與0 比較。      假設整型變數的名字為value ,它與零值比較的標準if 語句如下:     if (0 == value)     if ( 0 != value)

指標     應當將指標變數用“==”或“!=”與NULL比較。指標變數的零值是“空”(記為NULL)。儘管NULL的值與0 相同,但是兩者意義不 同。假設指標變數的名字為p ,它與零值比較的標準if 語句如下:

    if (NULL == p)     遇到沒有初始化的指標使用這個判斷就不能準確的判斷指標是否為NULL,所以定義指標時一定要初始化為NULL。

bool值

    不可將布林變數直接與TRUE 、 FALSE或者1 、 0 進比較。根據布林型別的語義,零值為“假”(記為FALSE),任何非零值都是“真”(記為TRUE )。 TRUE 的值究竟是什麼並沒有統⼀的標準。     假設布林變數名字為flag,它與零值比較的標準if 語句如下:     if (flag) // 表示flag為真     if (!flag) // 表示flag為假

    其它的用法都屬於不良風格,例如:     if (flag == true)    if (flag == 1)    if (flag == false)    if (flag == 0)

float型別

    不可將浮點變數用“==”或“!= ”與任何數字比較。無論是float 還是double 型別的變數,都有精度限制,應該設法轉化成“>=”或“<=”形式。     假設浮點變數的名字為x ,應當為     if ((x >= -EPSINON) && (x <= EPSINON))     其中EPSINON 是允許的誤差(即精度)。     如果不知道x的精度值呢?

#define EPSINON 0.0001
	float x=0.0001;

	if ((x >= -EPSINON) && (x <= EPSINON))
		printf("==\n");
	else
		printf("!=\n");

變數放在"=="後面     防止在寫程式碼時少敲一個"="導致出現對變數賦值語句,出現不可控或者達不到自己的編碼意圖;變數放在"=="後面可以在少敲一個"="在編譯時報錯誤及時的發現和改正。