Operátor čárky: ,
Umožňuje seskupení dvou příkazů tam, kde se očekává jen jeden příkaz.
Syntax
expression , expression
Poznámky
Operátor čárky má asociativitu 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 použití čárky jako oddělovače s jejím použitím jako operátoru. Tato dvě použití jsou zcela odlišná.
Vezměte v úvahu výraz e1, e2
. Typ a hodnota výrazu jsou typem a hodnotou e2; výsledek vyhodnocení e1 se zahodí. 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 vlastních argumentech funkcí nebo v inicializátorech agregace), 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
donutí závorky 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);
}
20
30
Viz také
Výrazy s binárními operátory
Integrované operátory C++, jejich priorita a asociativita
Operátor sekvenčního vyhodnocení