Je viens de courir dans cette pièce de code qui fait:
delete a; a = 0;
5 Réponses :
Ceci est la virgule. Il évalue à la fois ses arguments et renvoie le second. P>
Ceci est l'opérateur des virgules. Il peut être utilisé pour séparer les expressions, mais pas les déclarations. P>
Vous pouvez introduire plusieurs déclarations du même type avec la virgule.
en C et C ++, la plupart des "déclarations" sont en réalité des expressions. Le point-virgule ajouté à une expression en fait une déclaration. Alternativement, il est permis (mais presque toujours mal style) de séparer des expressions secondaires avec l'opérateur de la virgule: l'expression latérale gauche est évaluée pour ses effets secondaires (et sa valeur est supprimée) et la main droite L'expression auside est évaluée pour sa valeur. P>
C'est opérateur de virgule . L'article MSDN est ici . Et jetez un coup d'œil à Cette question de comprendre comment cela fonctionne. P>
S'il est possible d'écrire du code comme celui-là, il peut être quelque peu bizarre. Une usecase légèrement plus réaliste serait si vous avez une structure t code> comme suit:
for (auto it = mylist.begin(); it != mylist.end() && (it->check() || (it->fix(), true)); ++it);
C'est ce qu'on appelle l'opérateur de virgule: Cplusplus.com/doc/taturial/opérateurs .
Cela devrait être une réponse, pas un commentaire.
Bien sûr, l'exemple ici est C ++, pas C. :-)