2016-03-04 71 views
-1

在聲明中,cout << (i>0),其中i是正數,並且大於0,(? > 0)必須總是有多大的影響(據我測試)輸出1?cout << (i > 0);使它等於1?

#include <iostream> 

using namespace std; 

int main() 
{ 
    int i = 2, j = 5; 
    double k = 5.0; 
    cout << (i%j > 0) << " " << (i/k >0) << " " << (100>0) << endl; 
    cout << (i%j) << " " << (i/k) << endl; 
    return 0; 
} 

輸出:

1 1 1 
2 0.4  
+0

1 =真,0 =假,那是比較的結果。我錯過了什麼嗎? – agilob

+1

'i> 0'返回'bool'ean值(true或false)。 '''cout'的'''運算符將'bool'解釋爲'int'(或其他整數類型)並將值'0'打印爲'false',將'1'打印爲'true'。 –

+0

謝謝,我沒有想到它把它變成了布爾 – Petarian

回答

0

(i>0)返回一個布爾true/false,然後自動cout型鑄造爲1或0。

+0

大寫的「TRUE/FALSE」可能會導致宏「TRUE」和「FALSE」與布爾關鍵字/值「true」和「value」之間的混淆。 – kfsone

+0

@kfsone謝謝,我提出了改變建議。 –

0

你在perentheses使用的計算公式是被評價爲「真」「假」,所以當表達式求真正的輸出爲1,如果爲假的輸出爲0。如果要在可以啓用boolalpha,像這樣:

cout << boolalpha << (i % j > 0) << (i/k > 0);// rest of code... 

這樣做的輸出將是:

true false 
相關問題