Udostępnij za pośrednictwem


Operator obliczania sekwencyjnego

Operator obliczania sekwencyjnego, nazywany również "operatorem przecinka", oblicza sekwencyjnie dwa operandy, od lewej do prawej.

Składnia

  • expression:
    assignment-expression

    expression , assignment-expression

Lewy operand operatora obliczania sekwencyjnego jest obliczany jako wyrażenie void.Wynik operacji ma taką samą wartość i typ jak prawy operand.Każdy operand może być dowolnego typu.Operator obliczania sekwencyjnego nie wykonuje konwersji typów między operandami ani nie daje l-wartości.Po pierwszym operandzie znajduje się punkt sekwencji, co oznacza, że wszystkie efekty uboczne obliczeń lewego operandu będą zakończone przed rozpoczęciem obliczeń prawego operandu.Zobacz Punkt sekwencji aby uzyskać więcej informacji.

Operator obliczania sekwencyjnego jest zazwyczaj używany do obliczania co najmniej dwóch wyrażeń w kontekście, w którym dozwolone jest tylko jedno wyrażenie.

W niektórych kontekstach przecinki mogą być używane jako separatory.Jednakże, musisz uważać, żeby nie mylić użycia przecinka jako separator z użyciem jako operator; oba zastosowania są zupełnie różne.

Przykład

Ten przykład ilustruje operator obliczania sekwencyjnego:

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 obliczany jako pierwszy; następnie obliczany jest drugi operand, j––.

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

W wywołaniu funkcji func_one, przekazywane są trzy argumenty rozdzielone przecinkami: x, y + 2 i z.W wywołaniu funkcji func_two, nawiasy okrągłe wymuszają na kompilatorze interpretowanie pierwszego przecinka jako operatora obliczania sekwencyjnego.Wywołanie tej funkcji przekazuje dwa argumenty do func_two.Pierwszy argument jest wynikiem operacji obliczania sekwencyjnego (x--, y + 2), który ma wartość i typ wyrażenia y + 2; drugi argument to z.

Zobacz też

Informacje

Operator przecinkowy: ,