Sie können den Komma-Operator überall dort verwenden, wo ein Ausdruck angezeigt werden kann. Es gibt ein paar Ausnahmen; Insbesondere können Sie den Kommaoperator nicht in einem konstanten Ausdruck verwenden.
Sie müssen auch vorsichtig sein, wenn das Komma-Operator, wo das Komma auch als Trennzeichen, beispielsweise verwendet wird, wenn Funktionen aufrufen müssen Sie Klammern Gruppe das Komma Ausdruck verwenden:
void f(int, bool);
f(42, 32, true); // wrong
f((42, 32), true); // right (if such a thing can be considered "right")
Ihr Beispiel eine Erklärung:
int arr[3],arr[0]=1,arr[1]=2,arr[2]=3;
In einer Erklärung, können Sie mehrere Dinge erklären, indem sie mit dem Komma, so auch hier das Komma wird verwendet als Trennzeichen trennt. Sie können auch nicht einfach einen Ausdruck am Ende einer solchen Deklaration anheften. (Beachten Sie, dass Sie das gewünschte Ergebnis erhalten können, indem Sie int arr[3] = { 1, 2, 3 };
verwenden).
Auch eine interessante Frage ist, was * kann * mit dem Komma-Operator getan werden. Das Überladen des Komma-Operators ist das richtige Werkzeug, um zur Kompilierzeit zu testen, ob ein Ausdruckstyp ungültig ist oder nicht, d. 'sizeof ((expr, foo())) == sizeof (foo)' wobei 'foo' ein benutzerdefinierter Typ ist und eine' template foo (& operator, (T, foo)) [2]; ' . Bei Verwendung mit "T = void" wird der Standardkommaoperator verwendet. –