Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.