[英]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
之前被排序 。
在C ++ 17之前, 未指定函數調用的順序,這意味着可以按任何順序調用它們(並且在重復調用時此順序不必相同)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.