Der Komma-operator

Dieser Artikel behandelt einen weiteren Exoten der C und C++ Sprache, den Komma-operator.
Er wird dort verwendet, wo man mehrere Anweisungen in einen Ausdruck verpacken will. Das kann zum Beispiel als Teil des bedingten Operators oder in einer for-Schleife verwendet werden.

Syntax

<anweisung> , <anweisung> , …

Semantik

Alle <anweisung>en bis auf die letzte werden nacheinander ausgeführt.
Alle anweisungen außer der Letzten werden als „void“- Anweisung ausgeführt, der Rückgabetyp und der Rückgabewert der letzten Anweisung wird als Rückgabetyp und der Rückgabewert des Operators verwendet.

Beispiel

Am besten ist der Komma-operator mit einigen Beispielen zu erklären:

int a = (2, 3, 4, 5);
 
printf ("a ist jetzt %d\n", a); /* a ist jetzt 5 */

Ein etwas praktikableres Beispiel ist die for-Schleife:

for(i = 0, j = 10; i < 10; i++, j--)
{
    ... rest of loop ...
}

Probleme

Wenn der Operator dort verwendet wird wo normalerweise eine Komma-getrennte Liste verwendet wird, muss er in Klammern gesetzt werden. Beispiel:

f(a, (t=3, t+2), c)