2011-11-02 95 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