2011-11-02 11 views
7

He estado tratando de obtener la aritmética si el operador funciona, pero parece que no puedo hacerlo. Soy nuevo en C++ y todavía estoy aprendiendo lo básico, pero me pregunto si estoy usando este operador correctamente. Se supone que devuelve falso si x < y. ¿Es esta la forma correcta de hacerlo? Soy consciente de que puedo usar un if else pero me pregunto si también puedo hacerlo así y si puedo hacer lo que estoy haciendo mal.C++ aritmética si operador

#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

Sé que esto es un ejemplo, pero sólo por lo que no se tiene la idea equivocada: en este caso, usted acaba de escribir 'volver x

+1

No es necesario que el operador ternario, "return x Benj

+2

Además, solo por interés, intente con "cout << std :: boolalpha << test() << endl" – Benj

Respuesta

9

usted Estado:

Se Supongamos que devuelve falso si x < y

Y está tratando de aprender sobre el operador aritmético si (ternario), por lo que ignore todos los consejos para eliminarlo.

La primera parte después de ? es lo que se devolverá si la expresión es verdadera, y la segunda parte después de : es lo que se devolverá si no es verdadero. Por lo tanto usted tiene sus valores de retorno al revés, y que debe ser:

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

Cambio

cout << test; 

a

cout << test(); 

De lo contrario usted no está llamando a la función.

Además, lo siguiente:

return (x < y) ? true : false; 

hace lo contrario de lo que dice que está tratando de hacer ("return false si x < y").

La forma correcta es:

return (x < y) ? false : true; 

Tenga en cuenta que en este caso el operador ternario es innecesario, ya que sólo tiene que hacer:

return !(x < y); 
+2

+1. Tenga en cuenta que aumentar el nivel de advertencia en su compilador probablemente le haya advertido acerca de una conversión de un puntero a 'void *' aquí. –

+0

-1 el OP dijo "devuelve falso si x IronMensan