Operátor čárky: ,
Umožňuje seskupení dvou příkazů tam, kde je očekáváno.
expression , expression
Poznámky
Operátor čárky je asociativní zleva doprava.Dva příkazy oddělené čárkou jsou vyhodnoceny zleva doprava.Levý operand je vyhodnocen vždy a před vyhodnocením pravého operandu jsou dokončeny všechny vedlejší účinky.
V některých kontextech, například v seznamech argumentů funkcí, mohou být čárky použity jako oddělovače.Nezaměňujte užití čárky jako oddělovač s užitím jako operátor. Tato dvě použití jsou zcela odlišná.
Považte výraz
e1 , e2
Typem a hodnotou výrazu je typ a hodnota výrazu e2. Výsledek vyhodnocení výrazu e1 je zahozen.Je-li pravý operand l-hodnotou, je i tento výsledek l-hodnotou.
Na místech, kde se čárka obvykle používá jako oddělovač (například ve skutečných argumentech funkcí nebo v agregačních inicializátorech), musí být operátor čárky a jeho operandy uzavřeny do závorek.Příklad:
func_one( x, y + 2, z );
func_two( (x--, y + 2), z );
Ve volání funkce func_one výše jsou předány tři argumenty oddělené čárkami: x, y + 2 a z.Ve volání funkce func_two závorky donutí kompilátor interpretovat první čárku jako operátor sekvenčního vyhodnocení.Toto volání funkce předává do funkce func_two dva argumenty.Prvním argumentem je výsledek operace sekvenčního vyhodnocení (x--, y + 2), který má hodnotu a typ výrazu y + 2, druhým argumentem je proměnná z.
Příklad
// 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);
}
Viz také
Referenční dokumentace
Operátory C++, priorita a asociativita