簡體   English   中英

在cout語句中首先運行什么? (C ++ 17)

[英]What is run first inside a cout statement? (C++17)

比如說我有一個很長的聲明

cout << findCurrent() << "," << findLowest() << "," << findHighest() << "," << findThird()<<"\\n";

findCurrent()之前運行findLowest()一樣的邏輯使然?

從C ++ 17開始,保證可以從左到右調用這些函數,即findCurrent()調用findLowest() ,然后findLowest() ,依此類推。

C ++ 17標准參考:[expr.shift] / 4(參考表達式E1 << E2 ):

表達式E1在表達式E2之前排序。

[over.match.oper] / 2 :(描述重載的運算符)

操作數按照為內置運算符指定的順序排序。

[介紹執行] / 15:

如果與表達式X關聯的每個值計算和每個副作用在與表達式Y關聯的每個值計算和每個副作用之前都被排序,則可以說表達式X 表達式Y 之前排序

鏈接到cppreference摘要


在C ++ 17之前, 未指定函數調用的順序,這意味着可以按任何順序調用它們(並且在重復調用時此順序不必相同)。

在C ++ 17之前, 未指定評估順序

從C ++ 17開始,需要從左到右進行評估。 有關標准報價,請參見MM的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM