Udostępnij za pośrednictwem


Operator przecinka: ,

Umożliwia grupowanie dwóch instrukcji, w których jeden jest oczekiwany.

Składnia

expression , expression

Uwagi

Operator przecinka ma skojarzenie od lewej do prawej. Dwa wyrażenia oddzielone przecinkami są obliczane od lewej do prawej. Lewy operand jest zawsze oceniany, a wszystkie skutki uboczne są wykonywane przed oceną prawego operandu.

Przecinki mogą być używane jako separatory w niektórych kontekstach, takich jak listy argumentów funkcji. Nie należy mylić użycia przecinka jako separatora z jego użyciem jako operator; te dwa zastosowania są zupełnie inne.

Rozważ wyrażenie e1, e2. Typ i wartość wyrażenia są typem i wartością e2; wynik oceny e1 jest odrzucany. Wynik jest wartością l, jeśli prawy operand jest wartością l.

Jeśli przecinek jest zwykle używany jako separator (na przykład w rzeczywistych argumentach funkcji lub zagregowanych inicjatorów), operator przecinka i jego operandy muszą być ujęte w nawiasy. Na przykład:

func_one( x, y + 2, z );
func_two( (x--, y + 2), z );

W wywołaniu funkcji powyżej func_one trzy argumenty rozdzielone przecinkami są przekazywane: x, y + 2, i z. W wywołaniu funkcji do func_two, nawiasy wymuszają, aby kompilator interpretował pierwszy przecinek jako operator oceny sekwencyjnej. To wywołanie funkcji przekazuje dwa argumenty do func_two. Pierwszy argument jest wynikiem operacji (x--, y + 2)sekwencyjnej oceny , która ma wartość i typ wyrażenia y + 2; drugim argumentem jest z.

Przykład

// cpp_comma_operator.cpp
#include <stdio.h>
int main () {
   int i = 10, b = 20, c= 30;
   i = b, c;
   printf("%i\n", i);

   i = (b, c);
   printf("%i\n", i);
}
20
30

Zobacz też

Wyrażenia z operatorami dwuargumentowymi
Wbudowane operatory, pierwszeństwo i kojarzenie języka C++
Operator obliczania sekwencyjnego