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

Výrazy s binárními operátory

Operátory jazyka C++

Operátory C++, priorita a asociativita

Koncepty

Operátor sekvenčního vyhodnocení