c++ - son - operador ternario python
¿Cómo uso el operador condicional? (8)
Siempre me he preguntado cómo escribir la sintaxis "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 programador 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 declaración 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;
Yo diría el? es un atajo. Sin embargo, algunos programadores "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<c ? b : c;
Algunas personas afirman que es más claro escribir:
if(b<c)
a = b;
else
a = c;
Porque en casos futuros, las personas pueden atraparlo. Por supuesto, un simple b <c? b: c es fácil de atrapar, pero a veces se realizan operaciones complejas y puede ser difícil de detectar.
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 compila 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 programa 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 compilació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;
En c ++ no hay parte real de esto. Se llama operador ternario. Se usa así: <declaración booleana>? <resultado si es verdadero>: <resultado si es falso>; 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
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.
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.