operator Sequential-Evaluation

Operator oceny sekwencyjnej, nazywany również "operatorem przecinka", ocenia dwa operandy sekwencyjnie od lewej do prawej.

Składnia

expression:
assignment-expression
expression , assignment-expression

Lewy operand operatora oceny sekwencyjnej (,) jest obliczany void jako wyrażenie. Wynik operacji ma tę samą wartość i typ co prawy operand. Każdy operand może być dowolnego typu. Operator oceny sekwencyjnej nie wykonuje konwersji typów między operandami i nie zwraca wartości l. Jest punkt sekwencji po pierwszym operandzie, co oznacza, że wszystkie skutki uboczne z oceny lewego operandu są ukończone przed rozpoczęciem oceny prawego operandu. Aby uzyskać więcej informacji, zobacz Punkty sekwencji.

Operator oceny sekwencyjnej jest zwykle używany do obliczania co najmniej dwóch wyrażeń w kontekstach, w których dozwolone jest tylko jedno wyrażenie.

Przecinki mogą być używane jako separatory w niektórych kontekstach. Należy jednak uważać, aby nie mylić użycia przecinka jako separatora z jego użyciem jako operator; te dwa zastosowania są odrębne.

Przykład

W tym przykładzie przedstawiono operator oceny sekwencyjnej:

for ( i = j = 1; i + j < 20; i += i, j-- );

W tym przykładzie każdy operand trzeciego wyrażenia instrukcji for jest obliczany niezależnie. Lewy operand i += i jest oceniany jako pierwszy, a następnie jest oceniany prawy operand. j--

func_one( x, y + 2, z );
func_two( (x--, y + 2), z );

W wywołaniu funkcji do func_onemetody trzy argumenty rozdzielone przecinkami są przekazywane: x, y + 2, i z. W wywołaniu funkcji do func_two, nawiasy wymuszają, aby kompilator interpretował pierwszy przecinek jako operator oceny sekwencyjnej. To wywołanie funkcji przekazuje dwa argumenty do func_two. Pierwszy argument jest wynikiem operacji (x--, y + 2)sekwencyjnej oceny , która ma wartość i typ wyrażenia y + 2; drugim argumentem jest z.

Zobacz także

Operator przecinka: ,