int qempty()
{
return (f == r ? 1 : 0);
}
En el fragmento anterior, ¿qué significa " ? " ¿Con qué podemos reemplazarlo?
c++
operators
ternary-operator
Thaier Alkhateeb
fuente
fuente
Respuestas:
Esto se conoce comúnmente como el operador condicional , y cuando se usa así:
... si se
condition
evalúa comotrue
, la expresión se evalúa comoresult_if_true
, de lo contrario, se evalúa comoresult_if_false
.Es azúcar sintáctico , y en este caso, se puede reemplazar con
int qempty() { if(f == r) { return 1; } else { return 0; } }
Nota: Algunas personas se refieren a
?:
él como " el operador ternario ", porque es el único operador ternario (es decir, el operador que toma tres argumentos) en el idioma que están usando.fuente
a? b : c
azúcar sintáctico para[&]() -> Type { if (a) return b; else return c; }()
.Este es un operador ternario, es básicamente una declaración if en línea
funciona como
if(x) y else z
excepto que, en lugar de declaraciones, tiene expresiones; para que pueda usarlo en medio de una declaración más compleja.
Es útil para escribir código sucinto, pero puede usarse en exceso para crear código difícil de mantener.
fuente
Puedes reescribirlo como:
int qempty(){ return(f==r);}
Que hace lo mismo que se dice en las otras respuestas.
fuente
Solo una nota, si alguna vez ves esto:
Es una extensión GNU del estándar (consulte https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals ).
Es lo mismo que
fuente
x = 1+1 ? : 0
; devuelve correctamente2
, en mi compilador y esto no se quejó de nada.Se llama operador condicional .
Puede reemplazarlo con:
int qempty(){ if (f == r) return 1; else return 0; }
fuente
Es el operador condicional.
un ? antes de Cristo
Es un atajo para IF / THEN / ELSE.
significa: si a es verdadero, devuelve b, de lo contrario devuelve c. En este caso, si f == r, devuelve 1, de lo contrario, devuelve 0.
fuente
El signo de interrogación es el operador condicional. El código significa que si f == r entonces se devuelve 1, de lo contrario, se devuelve 0. El código podría reescribirse como
int qempty() { if(f==r) return 1; else return 0; }
que probablemente no sea la forma más limpia de hacerlo, pero con suerte ayudará a su comprensión.
fuente