2011-11-02 40 views
7

演算子if演算子を動作させようとしてきましたが、私はそれを行うように見えません。 私はC++を初めて使っていて、基本を学んでいますが、この演算子を正しく使用しているかどうかは不思議です。 x <の場合はfalseを返します。これは正しい方法ですか?私はif elseを使うことができることを知っていますが、私はこのようにしても、もし私が間違っていることができるのであれば、私はちょうど思っています。演算子if演算子

cout << test(); 

#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

私はこれが例であることを知っていますが、だれも間違った考えを得ることはできません。この場合、 'return x

+1

3項演算子「return x Benj

+2

また興味のある方は、 "cout << std :: boolalpha << test()<< endl" – Benj

答えて

9

あなたの状態:

をそれは、戻ると仮定した場合 x <y

演算子if(3進)演算子について学習しようとしているので、すべてのアドバイスを無視してそれを排除します。

?の後の最初の部分は、式がtrueの場合は返され、:の後の2番目の部分が真でない場合は返されます。したがって、あなたは戻り値を逆にする必要があります:

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

変更

cout << test; 

そうでなければ、関数を呼び出していません。

また、以下:

return (x < y) ? true : false; 

はあなたがやろうとしている言うことの反対( "< Y、Xの場合はfalseを返す")ん。

正しい方法は次のとおりです。

return (x < y) ? false : true; 

注あなたは、単に行うことができますので、この場合には三項演算子は、不要であること:

return !(x < y); 
+2

+1を試してみてください。コンパイラの警告レベルを上げると、ここで関数ポインタから 'void *'への変換が警告されているはずです。 –

+0

-1 OPは "x IronMensan