2017-08-20 37 views
-5
#include <stdio.h> 
#include <iostream> 
int main() 
{ 
    if(NULL) 
    std::cout<<"hello"; 
    else 
    std::cout<<"world"; 
    return 0; 
} 

輸出到上述問題是:爲什麼我在C++中獲得這個輸出?解釋邏輯

世界

請給我解釋一下爲什麼我得到這個輸出。即使提到幾個不同的來源,我也無法得到滿意的答案。

+4

NULL == 0 ==假(對於==的一個給定的定義)。因此if語句變成了'if(false)'等等 –

+0

我正在學習C++,並且我在某處讀到NULL和0是不同的。所以,我有點困惑。 –

+0

閱讀:http://en.cppreference.com/w/cpp/types/NULL –

回答

1

NULL導致錯誤狀態。你可以想像,NULL是0,所以這個:

if(NULL) 

將是相同的:

if(0) 

因此您的代碼將變成:

#include <stdio.h> 
#include <iostream> 
int main() 
{ 
    if(0) 
    std::cout<<"hello"; 
    else 
    std::cout<<"world"; 
    return 0; 
} 

哪裏是顯而易見的,由於0結果爲false,if條件不滿足,因此if語句的主體不被執行。結果,else語句的主體被執行,這解釋了你看到的輸出。


PS:Correct way of defining NULL and NULL_POINTER?

相關問題