理解 C 流中的運算順序
C 流插入運算子 (
程式碼範例和問題:
考慮以下內容程式碼:
myQueue.enqueue('a'); myQueue.enqueue('b'); cout << myQueue.dequeue() << myQueue.dequeue();
此程式碼列印“ba”而不是預期的“ab” 。同樣,以下程式碼:
myQueue.enqueue('a'); myQueue.enqueue('b'); cout << myQueue.dequeue(); cout << myQueue.dequeue();
列印“ab”而不是“ba”。
原因:
列印的順序使用
中間表示:
編譯器將
auto tmp1 = myQueue.dequeue(); auto tmp2 = myQueue.dequeue(); cout << tmp1 << tmp2;
編譯器翻譯
未指定tmp1 和tmp2 的求值順序。編譯器可能會選擇先計算 tmp1,然後計算 tmp2,反之亦然。
後果:
因為沒有保證計算的順序,所以使用的列印順序
結論:
使用時對於評估順序未明確定義的隊列或其他資料結構,了解不確定結果的可能性非常重要。為了確保可預測的列印,建議使用明確排序機制,例如單獨的以上是為什麼使用佇列時 C 流插入順序很重要?的詳細內容。更多資訊請關注PHP中文網其他相關文章!