2012-09-14 1 views
0

En C ce qui suit est un code valide:Quel est le nom de ce type d'instruction C?

if ((a, a+b, a*b) >= 0) { 
    .... 
} 

Est-ce que la partie (a, a+b, a*b) ont un nom spécial?

+2

C'est une expression plutôt inutile. Chaque partie est évaluée, mais aucune évaluation n'a d'effet permanent, à l'exception de celle utilisée pour la comparaison. – chris

+0

@chris comme toujours, sauf si 'a' et' b' sont 'volatils', auquel cas l'accès a des effets secondaires. – ouah

+0

@ouah, Bon à regarder toutes les possibilités. – chris

Répondre

7

x, y est appelée une expression de virgule.

, est appelé l'opérateur virgule en C et (x, y, z) est le même que ((x, y), z).

Il ne doit pas être confondu avec la virgule qui sépare les arguments de fonction et qui n'est pas l'opérateur de virgule.

+0

Suggestion de langue: Je pense que "il ne faut pas être confus" est meilleur. –

+0

@DanielFisher merci, je le prends – ouah

+1

Il est à noter que l'opérateur de virgule évalue de gauche à droite, mais le résultat de celui-ci est toujours le bon opérateur. Le résultat de l'évaluation de l'opérateur de gauche est ignoré. Donc (x, y) évaluerait y, donc ((x, y), z) est égal à (y, z). Alors (y, z) évaluerait z. – Lundin