int qempty()
{
return (f == r ? 1 : 0);
}
Dans l'extrait ci-dessus, que signifie "?"? Avec quoi pouvons-nous le remplacer?
Ceci est communément appelé l'opérateur conditionnel , et lorsqu'il est utilisé comme ceci:
condition ? result_if_true : result_if_false
... si condition
est évalué à true
, l'expression est évaluée à result_if_true
, sinon il est évalué à result_if_false
.
C'est sucre syntaxique , et dans ce cas, il peut être remplacé par
int qempty()
{
if(f == r)
{
return 1;
}
else
{
return 0;
}
}
Remarque: Certaines personnes se réfèrent à ?:
it comme " l'opérateur ternaire ", car il s'agit du seul opérateur ternaire (c'est-à-dire qui prend trois arguments) dans la langue qu'il utilise.
Ceci est un opérateur ternaire, il s’agit essentiellement d’une déclaration inline si
x ? y : z
fonctionne comme
if(x) y else z
sauf que, au lieu de déclarations, vous avez des expressions; afin que vous puissiez l'utiliser au milieu d'une déclaration plus complexe.
C'est utile pour écrire du code succinct, mais on peut en abuser pour créer du code difficile à gérer.
C'est ce qu'on appelle opérateur conditionnel .
Vous pouvez le remplacer par:
int qempty(){
if (f == r) return 1;
else return 0;
}
C'est l'opérateur conditionnel.
une ? avant JC
C'est un raccourci pour IF/THEN/ELSE.
signifie: si a est vrai, retourne b, sinon retourne c. Dans ce cas, si f == r, retourne 1, sinon retourne 0.
Juste une note, si jamais vous voyez ceci:
a = x ? : y;
Il s’agit d’une extension GNU à la norme (voir https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals) ).
C'est pareil que
a = x ? x : y;
Le point d'interrogation est l'opérateur conditionnel. Le code signifie que si f == r alors 1 est retourné, sinon, retourne 0. Le code pourrait être réécrit comme
int qempty()
{
if(f==r)
return 1;
else
return 0;
}
ce qui n'est probablement pas la façon la plus propre de le faire, mais cela aide, espérons-le, à votre compréhension.