¿Cómo uso el operador condicional?

Siempre me he preguntado cómo escribir la syntax "A ? B : C" en un lenguaje compatible con C ++.

Creo que funciona algo así como: (Pseudo código)

 If A > B C = A Else C = B 

¿Algún progtwigdor veterano de C ++ me ayude?

Funciona así:

 (condition) ? true-clause : false-clause 

Es más comúnmente utilizado en operaciones de asignación, aunque también tiene otros usos. El operador ternario ? es una forma de acortar una cláusula if-else, y también se llama una statement if inmediata en otros lenguajes ( IIf(condition,true-clause,false-clause) en VB, por ejemplo).

Por ejemplo:

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

es lo mismo que

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

Funciona así:

 expression ? trueValue : falseValue 

Lo que básicamente significa que si la expression evalúa como verdadera, se devolverá o se ejecutará TrueValue, y falseValue se devolverá o evaluará si no.

Recuerde que trueValue y falseValue solo se evaluarán y ejecutarán si la expresión es verdadera o falsa, respectivamente. Este comportamiento se llama cortocircuito.

En c ++ no hay parte real de esto. Se llama operador ternario. Se usa así: ? : ; Para su ejemplo anterior, se vería así:

 C = A > B ? A : B; 

Este artículo en wikipedia también lo discute: http://en.wikipedia.org/wiki/Ternary_operation

Supongo que te refieres a cosas como a = b? c: d, donde b es la condición, c es el valor cuando b es verdadero, y d es el valor cuando b es falso.

Yo diría el? es un atajo. Sin embargo, algunos progtwigdores “duros” tienden a decir que lo escriben por mucho tiempo para que, en casos futuros, las personas puedan leer y modificar el código fácilmente.

Por ejemplo, si escribes

 int a = b 

Algunas personas afirman que es más claro escribir:

 if(b 

Porque en casos futuros, las personas pueden atraparlo. Por supuesto, un simple b

Nadie parece mencionar que un resultado de la expresión de operador condicional puede ser un valor L en C ++ (pero no en C). El siguiente código se comstack en C ++ y funciona bien:

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

El progtwig anterior imprime 3, 2

Sin embargo, si a y b son de diferentes tipos, no funcionarán. El siguiente código proporciona un error de comstackción:

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

ES BASTANTE SIMPLE, SU SINTAXIS BÁSICA ES: expression1? Expression2: expression3;

Si la expresión 1 es verdadera, entonces la expresión 2 se mantendrá, de lo contrario la expresión 3 se mantendrá.

ejemplo:

hey=24>2?24:34;

aquí, como condición, se le asignará un valor verdadero de 24. si fuera falso, se le asignarán 34

simplemente puedes escribir esto como

C = (A> B)? A: B;

ESTO ES LO MISMO QUE:

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