2011-11-02 134 views
7

我一直在努力獲得算術,如果運算符工作,但我似乎無法做到這一點。 我是C++新手,仍在學習基礎知識,但我只是想知道我是否正確使用了這個操作符。如果x < y應該返回false。這是做到這一點的正確方法嗎?我知道我可以使用一個if else,但我只是想知道我是否也可以這樣做,如果我能做到我做錯了什麼。如果運算符爲C++算術

#include <iostream> 
using namespace std; 
int x =0; 
int y =1; 

bool test() 
{ 
    return (x < y) ? true : false; 
} 

int main() 
{ 
cout << test; 
return 0; 
} 
+7

我知道這是一個例子,但即使這樣沒有人會錯誤的想法:在這種情況下,你只寫'返回X

+1

不需要三元運算符,「return x Benj

+2

此外,只是爲了興趣,請嘗試「cout << std :: boolalpha << test()<< endl」 – Benj

回答

9

幽州:

它假設返回如果x < y

而你正試圖瞭解算術if(三元)運算符,所以忽略所有的建議以消除它。

?之後的第一部分是表達式爲真時返回的結果,:之後的第二部分是返回的,如果不是真的。因此,你有你的返回值反轉,它應該是:

return (x < y) ? false : true; 
16

變化

cout << test; 

cout << test(); 

否則你不調用該函數。

此外,以下內容:

return (x < y) ? true : false; 

做的,你說你正在試圖做的相反( 「返回false如果x < Y」)。

正確的方法是:

return (x < y) ? false : true; 

注意,在這種情況下,三元運算符是不必要的,因爲你可以簡單地做:

return !(x < y); 
+2

+1。請注意,提高編譯器的警告級別可能會警告有關從函數指針到void *的轉換。 –

+0

-1 OP表示「如果x IronMensan