92 votes

Que signifie le caractère point d'interrogation ('?') en C++ ?

int qempty()
{
    return (f == r ? 1 : 0);
}

Dans l'extrait ci-dessus, que signifie " ?"? Par quoi pouvons-nous le remplacer ?

147voto

Daniel LeCheminant Points 28101

C'est ce qu'on appelle communément le opérateur conditionnel et quand il est utilisé comme ça :

condition ? result_if_true : result_if_false

... si le condition évalue à true l'expression est évaluée à result_if_true sinon, il est évalué à result_if_false .

Il est sucre syntaxique et dans ce cas, il peut être remplacé par

int qempty()
{ 
  if(f == r)
  {
      return 1;
  } 
  else 
  {
      return 0;
  }
}

Note : Certaines personnes font référence à ?: comme " l'opérateur ternaire ", car c'est le seul opérateur ternaire (c'est-à-dire un opérateur qui prend trois arguments) dans le langage qu'ils utilisent.

15voto

Richard Points 831

C'est un opérateur ternaire, c'est en fait une instruction if en ligne.

x ? y : z

fonctionne comme

if(x) y else z

sauf qu'au lieu de déclarations, vous avez des expressions ; vous pouvez donc l'utiliser au milieu d'une déclaration plus complexe.

Il est utile pour écrire un code succinct, mais peut être surutilisé pour créer un code difficile à maintenir.

8voto

Nick Kossifidis Points 51

Juste une note, si jamais tu vois ça :

a = x ? : y;

Il s'agit d'une extension GNU de la norme (voir https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals ).

C'est la même chose que

a = x ? x : y;

6voto

Vous pouvez juste le réécrire comme :

int qempty(){ return(f==r);}

Ce qui fait la même chose que ce qui est dit dans les autres réponses.

5voto

jjnguy Points 62123

On l'appelle le opérateur conditionnel .

Vous pouvez le remplacer par :

int qempty(){ 
    if (f == r) return 1;
    else return 0;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X