計算機程序設計中的序列點是指在程序執行過程中,當一個變量的值被完全計算出來時出現的一個時刻,由于之前的操作中沒有掛起的更改,也沒有在將來的表達式中執行計算。序列點存在的地方很多,主要是在C語言標準中定義的,比如...
計算機程序設計中的序列點是指在程序執行過程中,當一個變量的值被完全計算出來時出現的一個時刻,由于之前的操作中沒有掛起的更改,也沒有在將來的表達式中執行計算。序列點存在的地方很多,主要是在C語言標準中定義的,比如在函數內部執行代碼之前,在諸如“for”和“if”這樣的語句中的控制表達式的末尾,以及在任何完整表達式的末尾,例如簡單的一行C代碼。定義序列點的一些原因是為了避免不明確的情況,導致未定義的行為,或可能混淆編譯器并生成不可預測的代碼。在許多情況下,程序員不會顯式地擔心序列點,盡管在創建編譯器時,這個概念對于確保代碼的正確執行是非常重要的。女人和計算機做倒立動作C語言中的一個序列點的例子在語句a=a B;中。在這個表達式中,分號是序列點;當表達式完成時,將計算A的值,并且在下一個表達式開始之前不會對其執行任何殘差計算。等號不是序列點,因為編譯器可以在整個表達式中以任何順序修改的值。序列點的主要規則是,除了計算其值的更改外,在點之間訪問變量的次數不得超過一次。如果違反此規則,則最好在將值賦給數組時表示。如果有一個變量a和一個名為I的數組,然后在C中語法上可以寫下表達式I[a]=a。在這里,除了計算其當前值外,還可以多次訪問變量;也就是說,它被用作數組I的索引這意味著編譯器可能會在A用作索引之前或之后對其進行增量,從而產生程序中無法依賴的不可預知的行為。基本上,序列點可以被看作是一種確保編譯器能夠并且將一致地計算和執行語句的方法。這也允許編譯器使用優化策略,因為定義的行為是可預測的。在C語言標準中,序列點有三個主要實例,即函數開始執行時,邏輯運算符和逗號的點,以及以分號結尾的完整表達式的結尾,就像大多數C語句那樣
-
發表于 2020-08-06 18:27
- 閱讀 ( 1066 )
- 分類:電腦網絡