首頁 > 後端開發 > C++ > 程式設計中運算子優先權與求值順序有何不同?

程式設計中運算子優先權與求值順序有何不同?

Susan Sarandon
發布: 2024-12-21 04:31:12
原創
959 人瀏覽過

How Does Operator Precedence Differ from the Order of Evaluation in Programming?

運算子優先權和求值順序之間有什麼關係?

與通俗理解相反,運算子優先順序並不能完全決定求值的順序程式中的評估。雖然優先權控制值計算的順序,但操作數本身的求值仍然獨立於優先權。

範例:

考慮表達式 x

y push(z); push(y); push(x); test_less(); // compares TOS to TOS(1), pushes result on stack test_less(); // compares TOS to TOS(1), pushes result on stack

這會在 x 或 y 之前計算 z,但仍會計算 (x 評估和副作用:

副作用,例如從概念上講,遞增或遞減變數是由單獨的執行緒執行的。該線程在下一個序列點加入。考慮表達式 a = b c;。它可以如下執行:
push(a);
push(b);
push(c+1);
side_effects_thread.queue(inc, b);
side_effects_thread.queue(inc, c);
add();
assign();
join(side_effects_thread);
登入後複製

這裡,a 在 b 或 c 之前計算,即使它是賦值的目標。嘗試在下一個序列點之前的表達式的任何其他部分中使用變數會導致未定義的行為。

以上是程式設計中運算子優先權與求值順序有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板