關于null值比較

一 null值比較場景

對于C/C++或者java中對于null值的比較,有的時候直接使用if(!p)有的時候使用if(p == null)玻淑,可能有的編程規(guī)范中要求null值在前面if(null == p)搂妻,那么我們?nèi)粘J褂弥性撊绾问褂媚兀?有沒有一個統(tǒng)一的標準寝凌。
C語言中對null的比較纺且,以linux kernel中的代碼為例,使用的是if( p == NULL) 判斷

static inline int nf_bridge_get_physinif(const struct sk_buff *skb)
{
    struct nf_bridge_info *nf_bridge;

    if (skb->nf_bridge == NULL)
        return 0;

C++中對null指針的比較难述,以android中c++的工程代碼為例踩身,if(!p)和 if( p == nullptr) 都有使用,這里有一點要指出的是,c++使用的是nullptr而不是NULL

Return<Result> Health::update() {
    if (!healthd_mode_ops || !healthd_mode_ops->battery_update) {
        LOG(WARNING) << "health@2.0: update: not initialized. "
                     << "update() should not be called in charger / recovery.";
        return Result::UNKNOWN;
    }
Return<void> Health::debug(const hidl_handle& handle, const hidl_vec<hidl_string>&) {
    if (handle != nullptr && handle->numFds >= 1) {
        int fd = handle->data[0];
        battery_monitor_->dumpState(fd);

Java語言中null的比較,也是if (obj != null)的方式:

    @Override
    public ArrayList<View> buildTouchDispatchChildList() {
        mTouchDispatchList.ensureCapacity(3);
        if (mCaption != null) {
            mTouchDispatchList.add(mCaption);
        }
        if (mContent != null) {
            mTouchDispatchList.add(mContent);
        }
        return mTouchDispatchList;
    }

二 分析

在C語言中關于NULL的定義

 define NULL ((void*)0)

在C++語言中空指針使用的是nullptr而不是NULL着饥,是因為NULL在C++中被定義成0,而nullptr才是給指針使用的惰赋。

#define NULL 0

由于JAVA中宰掉,除了立即數(shù),其他都是對象赁濒,因此使用if(obj == null)進行比較轨奄。
可能每個公司的編程規(guī)范要求null值在前,避免賦值操作拒炎,相關bug不好查找挪拟,對于java來說這方面不用考慮,因為

if (o = null)

上面這種壓根就編譯不過击你,因為if判斷的是boolean類型玉组,唯一需要考慮的是下面這種情況

int m1(boolean x)
{
    if (x = true)  // oops, assignment instead of equality

像上面這種的話,直接判斷x值即可

三 總結

1 對于java語言丁侄,除非編程規(guī)范限制惯雳,使用if (obj == null)判斷即可,沒有風險
2 由于C語言沒有boolean類型鸿摇,因此對于空指針判斷使用if(!p)比較好一點石景。如果使用NULL的話,編程規(guī)范有特殊要求的話拙吉,比如要在左邊if(NULL == p)那就按照編程規(guī)范書寫潮孽。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市筷黔,隨后出現(xiàn)的幾起案子往史,更是在濱河造成了極大的恐慌,老刑警劉巖佛舱,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椎例,死亡現(xiàn)場離奇詭異挨决,居然都是意外死亡,警方通過查閱死者的電腦和手機粟矿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門凰棉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人陌粹,你說我怎么就攤上這事撒犀。” “怎么了掏秩?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵或舞,是天一觀的道長。 經(jīng)常有香客問我蒙幻,道長映凳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任邮破,我火速辦了婚禮诈豌,結果婚禮上,老公的妹妹穿的比我還像新娘抒和。我一直安慰自己矫渔,他們只是感情好,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布摧莽。 她就那樣靜靜地躺著庙洼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镊辕。 梳的紋絲不亂的頭發(fā)上油够,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音征懈,去河邊找鬼石咬。 笑死,一個胖子當著我的面吹牛受裹,可吹牛的內(nèi)容都是我干的碌补。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼棉饶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了镇匀?” 一聲冷哼從身側(cè)響起照藻,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汗侵,沒想到半個月后幸缕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體群发,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年发乔,在試婚紗的時候發(fā)現(xiàn)自己被綠了熟妓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡栏尚,死狀恐怖起愈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情译仗,我是刑警寧澤抬虽,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站纵菌,受9級特大地震影響阐污,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜咱圆,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一笛辟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧序苏,春花似錦手幢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至踱阿,卻和暖如春管钳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背软舌。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工才漆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人佛点。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓醇滥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親超营。 傳聞我的和親對象是個殘疾皇子鸳玩,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,089評論 1 32
  • __block和__weak修飾符的區(qū)別其實是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,284評論 0 6
  • 多線程演闭、特別是NSOperation 和 GCD 的內(nèi)部原理不跟。運行時機制的原理和運用場景。SDWebImage的原...
    LZM輪回閱讀 2,004評論 0 12
  • 高中同學阿香小孩兒都一歲多了购城。同歲的人哪。不知不覺已經(jīng)28歲了虐译。
    隔天相望害相思閱讀 378評論 0 0
  • 詩音雅韻 詩書萬卷氣自華瘪板, 音落珠貝映晚沙, 雅亭淺墨抒川海漆诽, 韻起應如沸中茶侮攀。
    流年_逝水閱讀 336評論 2 2