C 各型別與0比較的問題

2021-08-19 21:32:32 字數 921 閱讀 6743

在我們日常程式設計中,經常可以遇到各種型別與0比較的情況,很多情況下我們運用的都不是那麼恰當,比如說float a 與0比較的時候,有一部分程式設計師(包括我)會直接寫if(0.0 == a)這樣寫一般情況下不會出下什麼太大的問題,不過還是很有隱患的。

下面我們來總結一下各種型別與0值比較的情況,希望大家以後能夠規範自己的**風格,提高自己的編碼質量。

型別一:布林值 bool 與 0 值比較

bool flag = true;

if ( flag ) //true

if ( !flag ) // false

型別二: 整形 int short long

int flag = 1;

if ( flag == 0 )

if ( flag != 0 )

型別三:浮點型 float double 

#define epsilon 0.000000000001;

float flag = 1.0;

if ( flag < epsilon && flag > -epsilon)

這裡引申一下,兩個浮點型別的數值判斷是否相等怎麼辦?

#define epsilon 0.000000000001;

float flag1 = 1.0;

float flag2 = 2.1;

if ( abs(flag1 - flag2) < epsilon) && abs(flag1 - flag2) > -epsilon)

型別四:指標 

int *ptr = new int(5);

if ( ptr == null )

if ( ptr != null)

bool型別變數與0比較的if語句應該怎樣書寫

bool btestflag false 想想為什麼一般初始化為 false 比較好?a if btestflag 0 if btestflag 1 b if btestflag true if btestflag flase c if btestflag if btestflag 哪一組或是那些組...

原創 各類輸出與輸出優化的比較

一 背景 做題的時候,經常寫讀入優化,而讀入優化的核心是 getchar 它比scanf快多了。我不禁想,有沒有 putchar 呢?有。那麼有沒有輸出優化呢?它和printf和cout誰更快呢?於是就寫下了這個驗證程式。二 驗證 在網上搜了一下,主要有兩種輸出優化。第一種是比較常見的 inline...

c 無符號型別與負數的比較

include using namespace std intmain else return0 如上這段 比較乙個無符號數 10 和乙個負數 1 最後的輸出結果卻是 no10 1是很顯然的事,但是在程式中無符號數和有符號的負數之間進行比較時卻出現了問題。再來看看如下這段 include using...