2011-11-02 17 views
7

Ho cercato di ottenere l'aritmetica se l'operatore ha funzionato ma non riesco a farlo. Sono nuovo del C++ e sto ancora imparando le basi, ma mi chiedo solo se sto usando questo operatore correttamente. Dovrebbe restituire false se x < y. È questo il modo corretto per farlo? Sono consapevole che posso usare un altro se non altro, ma mi chiedo se posso anche farlo in questo modo e se riesco a fare quello che sto sbagliando.Aritmetica C++ se operatore

#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

So che questo è un esempio, ma solo così nessuno si faccia un'idea sbagliata: in questo caso, si sarebbe solo scrivere 'tornare x

+1

Nessuna necessità per l'operatore ternario, "return x Benj

+2

Inoltre, solo per interesse, prova "cout << std :: boolalpha << test() << endl" – Benj

risposta

9

È stato:

E ' supponiamo di restituire false se x < y

E stai cercando di conoscere l'operatore aritmetico se (ternario), quindi ignora tutti i consigli per eliminarlo.

La prima parte dopo lo ? è ciò che verrà restituito se l'espressione è vera e la seconda parte dopo lo : è ciò che verrà restituito se non è vero. Così avete i vostri valori di ritorno invertiti, e dovrebbe essere:

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

Change

cout << test; 

a

cout << test(); 

Altrimenti non stai chiamando la funzione.

Inoltre, il seguente:

return (x < y) ? true : false; 

fa il contrario di quello che dici che stai cercando di fare ("restituire false se x < y").

Il modo corretto è:

return (x < y) ? false : true; 

Si noti che in questo caso l'operatore ternario non è necessaria, dal momento che si può semplicemente fare:

return !(x < y); 
+2

+1. Si noti che l'aumento del livello di avviso sul compilatore avrebbe probabilmente avvertito di una conversione da un puntatore a "void *" qui. –

+0

-1 l'OP ha detto "return false if x IronMensan