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í:
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;