Sequenz-Operator ,

Der Sequenz-Operator wertet mehrere Ausdrücke sequentiell hintereinander aus wobei alle Ausdrücke zusammen als eine einzige Anweisung gelten. Dieser Operator wird fast auschliesslich nur bei for-Schleifen verwendet.




0, 10
1, 9
2, 8
3, 7
4, 6
#include <stdio.h>

int main(){
  int i;
  int j = 10;
  for(i=0; i<5; i++, j--){
    printf("%d, %d\n", i, j);
  }
  return 0;
}

Details

Der Sequenz-Operator erwartet zwei Operanden und wird von links nach rechts abgearbeitet. Während in C beide Operanden rvalues bezeichnen, können in C++ beide Operanden rvalues oder lvalues sein. Der Rückgabewert ist in C ein rvalue: Der Wert des zweiten Operanden. In C++ ist der Rückgabewert entsprechend dem zweiten Operanden entweder ein rvalue oder ein lvalue.

Der Sequenz-Operator wird äusserst selten gebraucht. Er wird jedoch verwendet, um mehrere Anweisungen als eine einzige Anweisung gelten zu lassen, was insbesondere bei gewissen Konstrukten mit der for-Schleife nützlich sein kann, da eine for-Schleife nur eine einzelne Anweisung für die Startanweisung und die Statusänderung zulässt. Weitere Informationen darüber können bei der for-Schleife nachgelesen werden.

Von einem anderweitigen Gebrauch des Sequenz-Operators ist abzuraten, da zum einen der Code unleserlich wird, zum anderen der Compiler die üblichen Optimierungen auf die Ausdrücke nicht mehr anwenden kann.

Es ist zu bemerken, dass Kommas , im Code eher zu Parameter- oder Argumentenlisten, Aggregats-Zuweisungen oder Member-Initialisierungen gehören, welche jedoch explizit nichts mit dem Sequenz-Operator zu tun haben.