Partager via


Opérateur virgule : ,

Permet à regroupement deux instructions où il est attendu.

expression , expression

Notes

L'opérateur virgule présente une associativité de gauche à droite.Deux expressions séparées par des virgules sont évaluées de gauche à droite.L'opérande de gauche est toujours évalué, et tous les effets secondaires soient effectués avant que l'opérande de droite est évaluée.

Des virgules peuvent être utilisés comme séparateurs dans certains contextes, tels que les listes d'arguments de fonction.Ne confondez pas l'utilisation de la virgule comme séparateur son utilisation comme opérateur ; les deux utilisations sont complètement différentes.

considérez l'expression

e1 , e2

le type et la valeur de l'expression sont le type et la valeur d' e2; le résultat d'évaluer e1 est ignoré.Le résultat est une l-value si l'opérande de droite est une l-value.

Si la virgule est normalement utilisée comme séparateur (par exemple dans les arguments réels aux fonctions ou les initialiseurs d'agrégat), l'opérateur virgule et ses opérandes doivent être placés entre parenthèses.Par exemple :

func_one( x, y + 2, z );
func_two( (x--, y + 2), z );

dans l'appel de fonction à func_one ci-dessus, trois arguments, séparés par des virgules, sont passés : x, y + 2, et z.Dans l'appel de fonction à func_two, les parenthèses forcent le compilateur pour interpréter la première virgule comme opérateur de séquentiel-évaluation.cet appel de fonction passe deux arguments à func_two.le premier argument est le résultat de l'opération (x--, y + 2)de séquentiel-évaluation, qui a la valeur et le type de l'expression y + 2; le deuxième argument est z.

Exemple

// cpp_comma_operator.cpp
#include <stdio.h>
int main () {
   int i = 10, b = 20, c= 30;
   i = b, c;
   printf("%i\n", i);

   i = (b, c);
   printf("%i\n", i);
}
  

Voir aussi

Référence

Expressions avec les opérateurs binaires

Opérateurs C++

Priorité des opérateurs et d'associativité

Concepts

Opérateur de Séquentiel-Évaluation