2010-08-25 10 views
13

Perché non è possibile utilizzare la parola chiave return all'interno degli operatori ternari in C, ad esempio: sum> 0? return 1: return 0;Operatori ternari e ritorno in C

+17

Cosa c'è che non va con "somma di ritorno> 0? 1: 0; '? –

+2

Oppure, se è così, 'if (sum> 0) restituisce 1; else return 0; ' –

+1

Grazie per tutte le risposte. Non c'è niente di sbagliato nella somma di ritorno> 0? 1: 0; Voglio solo sapere perché non possiamo usarlo nel modo sopra menzionato nella domanda. – nullpointerexception

risposta

26

return è una dichiarazione. Le istruzioni non possono essere utilizzate all'interno di espressioni in questo modo.

25

Perché un'operazione ternaria è un'espressione e non è possibile utilizzare le istruzioni nelle espressioni.

Si può facilmente utilizzare un operatore ternario in un ritorno però.

return sum > 0 ? 1 : 0; 

O come DrDipShit rilevare:

return sum > 0; 
+8

di just: return sum> 0; che funziona comunque come restituire 1 o 0. –

+0

@DrDipShit: molto vero, in questo caso funziona altrettanto bene :) – Wolph

9

Perché return è un'affermazione, non un'espressione. Non puoi fare anche int a = return 1;.

2

visualizzare la sintassi di un operatore ternario è

expr1 ? expr2: expr3; 

dove expr1, expr2, expr3 sono espressioni;

L'operatore ?: funziona come segue expr1 viene valutata prima se è vero expr2 viene valutata altrimenti expr3 viene valutata.

quindi nelle espressioni l'istruzione return non può essere utilizzata in linguaggio C.

+1

-1, in realtà non risponde alla domanda. anche SO non è progettato per indirizzare il traffico verso il tuo sito web – Hasturkun

0

Solo osservando la sintassi è necessario sapere che un'istruzione non può essere utilizzata in un'espressione. Si può ottenere ciò che si desidera facendo: return sum > 0 ? 1 : 0;