Udostępnij za pośrednictwem


Punkty sekwencji języka C

Pomiędzy kolejnymi "punktami sekwencji" wartość obiektu może być modyfikowana tylko raz przez wyrażenie.Język C definiuje następujące punkty sekwencji:

  • Lewy operand logicznego operatora AND (&&).Lewy operand logicznego operatora AND jest obliczany całkowicie, wraz ze wszystkimi efektami ubocznymi zakończonymi przed kontynuacją.Jeśli lewy operand ma wartość false (0), inny argument nie jest obliczany.

  • Lewy operand logicznego operatora OR (||).Lewy operand logicznego operatora OR jest obliczany całkowicie, wraz ze wszystkimi efektami ubocznymi zakończonymi przed kontynuacją.Jeśli lewy operand ma wartość true (niezerową), inny argument nie jest obliczany.

  • Lewy operand operatora przecinka.Lewy operand operatora przecinka jest obliczany całkowicie, wraz ze wszystkimi efektami ubocznymi zakończonymi przed kontynuacją.Oba operandy operatora przecinka są obliczane zawsze.Należy zauważyć, że operator przecinka w wywołaniu funkcji nie gwarantuje kolejności oceny.

  • Operator wywołania funkcji.Wszystkie argumenty funkcji są obliczane wraz ze wszystkimi efektami ubocznymi zakończonymi przed wejściem do funkcji.Kolejność oceny argumentów nie jest określona.

  • Pierwszy operand operatora warunkowego.Pierwszy operand operatora warunkowego jest obliczany całkowicie, wraz ze wszystkimi efektami ubocznymi zakończonymi przed kontynuacją.

  • Koniec pełnego wyrażenia inicjalizacji (to znaczy wyrażenia, które nie jest częścią innego wyrażenia, takiego jak koniec inicjalizacji w instrukcji deklaracji).

  • Wyrażenie w instrukcji wyrażenia.Instrukcje wyrażeń składają się z opcjonalnego wyrażenia z następującym po nim średnikiem (;).Wyrażenie jest obliczane dla jego skutków ubocznych i w wyniku tych obliczeń istnieje punkt sekwencji.

  • Wyrażenie kontrolujące w instrukcji wyboru (if lub switch).Wyrażenie jest obliczane całkowicie, wraz ze wszystkimi efektami ubocznymi zakończonymi przed wykonaniem kod zależnego od wyboru.

  • Wyrażenie kontrolujące instrukcje while lub do.Wyrażenie jest obliczane całkowicie, wraz ze wszystkimi efektami ubocznymi zakończonymi przed wykonaniem następnej iteracji pętli while lub do.

  • Każde z trzech wyrażeń instrukcji for.Wyrażenie jest obliczane całkowicie, wraz ze wszystkimi efektami ubocznymi zakończonymi przed wykonaniem następnej iteracji pętli for.

  • Wyrażenie w instrukcji return.Wyrażenie jest obliczane całkowicie, wraz ze wszystkimi efektami ubocznymi zakończonymi przed zwróceniem sterowania do funkcji wywołującej.

Zobacz też

Koncepcje

Szacowanie wyrażeń (C)