Come si usa l’operatore condizionale?

Mi sono sempre chiesto come scrivere la syntax "A ? B : C" in un linguaggio compatibile con C ++.

Penso che funzioni qualcosa come: (Pseudo codice)

 If A > B C = A Else C = B 

Qualunque veterano programmatore C ++ può aiutarmi?

Funziona così:

 (condition) ? true-clause : false-clause 

È più comunemente usato nelle operazioni di assegnazione, sebbene abbia anche altri usi. L’operatore ternario ? è un modo per abbreviare una clausola if-else, ed è anche chiamata un’istruzione immediata-if in altre lingue ( IIf(condition,true-clause,false-clause) in VB, ad esempio).

Per esempio:

 bool Three = SOME_VALUE; int x = Three ? 3 : 0; 

equivale a

 bool Three = SOME_VALUE; int x; if (Three) x = 3; else x = 0; 

Funziona così:

 expression ? trueValue : falseValue 

Il che significa che se l’ expression restituisce true, trueValue verrà restituito o eseguito e falseValue verrà restituito o valutato in caso contrario.

Ricorda che trueValue e falseValue saranno valutati ed eseguiti solo se l’espressione è vera o falsa, rispettivamente. Questo comportamento è chiamato cortocircuito.

In c ++ non esiste una parte reale di questo. Si chiama operatore ternario. È usato in questo modo: ? : ; Per il tuo esempio sopra sembrerebbe questo:

 C = A > B ? A : B; 

Anche questo articolo su wikipedia lo discute: http://en.wikipedia.org/wiki/Ternary_operation

Immagino tu intenda cose come a = b? c: d, dove b è la condizione, c è il valore quando b è vero, e d è il valore quando b è falso.

Direi il? è una scorciatoia. Tuttavia, alcuni programmatori “hard-core” tendono a dire di scriverlo a lungo, quindi in casi futuri, le persone possono facilmente leggere e modificare il codice.

Ad esempio, se scrivi

 int a = b 

Alcuni sostengono che è più chiaro scrivere:

 if(b 

Perché nei casi futuri, le persone possono prenderlo. Certo, un semplice b

Nessuno sembra menzionare che un risultato dell’espressione di operatore condizionale può essere un valore L in C ++ (ma non in C). Il seguente codice si compila in C ++ e funziona bene:

  int a, b; bool cond; a=1; b=2; cond=true; (cond? a : b) = 3; cout << a << "," << b << endl; 

Il programma sopra mostra 3, 2

Tuttavia se a e b sono di tipi diversi, non funzionerà. Il seguente codice fornisce un errore del compilatore:

  int a; double b; bool cond; a=1; b=2; cond=true; (cond? a : b) = 3; cout << a << "," << b << endl; 

È SEMPLICE SEMPLICE È SINTASSI DI BASE IS: expression1? Expression2: expression3;

Se l’espressione 1 è true, l’espressione 2 verrà mantenuta altrimenti l’espressione 3 verrà mantenuta.

esempio:

hey=24>2?24:34;

qui come condizione viene assegnato il vero valore di 24. se fosse falso, verrà assegnato a 34

semplicemente puoi scrivere questo come

C = (A> B) A: B;

QUESTO È LO STESSO COME:

 if(A>B) C=A; else C=B;