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, pierwszeństwo i kojarzenie języka C++