7
votes

Syntaxe C / C ++ - Séparer des déclarations avec, au lieu de; légal?

Je viens de courir dans cette pièce de code qui fait:

delete a;
a = 0;


3 commentaires

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. :-)


5 Réponses :


6
votes

Ceci est la virgule. Il évalue à la fois ses arguments et renvoie le second.


0 commentaires

5
votes

Ceci est l'opérateur des virgules. Il peut être utilisé pour séparer les expressions, mais pas les déclarations.


1 commentaires

Vous pouvez introduire plusieurs déclarations du même type avec la virgule.



7
votes

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.


0 commentaires

5
votes

C'est opérateur de virgule . L'article MSDN est ici . Et jetez un coup d'œil à Cette question de comprendre comment cela fonctionne.


0 commentaires

1
votes

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);


0 commentaires