Udostępnij za pośrednictwem


Operator przecinkowy: ,

Umożliwia grupowanie dwóch wyrażeń gdy oczekiwane jest jedno.

expression , expression

Uwagi

Operator przecinka posiada łączność od lewej do prawej.Dwa wyrażenia oddzielone przecinkiem są oceniane od lewej do prawej.Lewy operand jest zawsze obliczany, a wszystkie efekty uboczne będą zakończone, zanim zostanie oceniony prawy operand.

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 wykorzystaniem jako operatora; te dwa rodzaje zastosowania są zupełnie odmienne.

Weźmy pod uwagę wyrażenie

e1 , e2

Typ i wartość wyrażenia mają rodzaj i wartość e2; wynik oceny e1 jest odrzucany.Wynik jest l-wartością jeśli prawy operand jest l-wartością.

Tam gdzie przecinek jest normalnie używany jako separator (na przykład w argumentach do funkcji w inicjatorach agregacji), operator przecinek i jego argumenty 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 func_one powyżej, przekazywane są trzy argumenty, oddzielone przecinkami: x, y + 2, i z.W wywołaniu funkcji func_two, nawiasy wymuszają na kompilatorze interpretowanie pierwszego przecinka jako operatora obliczenia sekwencyjnego.Wywołanie tej funkcji przekazuje dwa argumenty do func_two.Pierwszy argument jest wynik operacji obliczenia sekwencyjnego (x--, y + 2), który ma wartość i typ wyrażenia y + 2; drugi argument to 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);
}
  

Zobacz też

Informacje

Wyrażenia z operatorami dwuargumentowymi

Operatory języka C++

Operatory, pierwszeństwo i kojarzenie języka C++

Koncepcje

Operator obliczania sekwencyjnego