簡體   English   中英

我將用++ + i ++在C ++ 17中評估什么?

[英]What will i++ + i++ evaluate to in C++17?

看起來我們正在為C ++獲得一個全新的“面試問題”(我希望不是,實際上)。

眾所周知,在C ++ 17之前,它是未定義的行為 ,但它是否會從C ++ 17開始明確定義

由於目前似乎沒有一個編譯器實現了這個C ++ 17的修改,任何人都可以解釋一下,根據表達式評估規則, x的值在下面的代碼中?

int i = 0;
int x = i++ + i++;

阿利斯代爾梅雷迪思提到這個例子在這里他CppCon 2016的談話,但它並不完全清楚,我的最終值是什么x會(雖然它似乎什么他要說的是,這將是至少1)。

顯然,在這種情況下, i本身將在表達式結尾處為2。

P0145R3(PDF)不會更改所有表達式的評估順序。 它只影響少數運營商。 二進制加法不在該列表中。

因此,上述代碼仍未定義。

暫無
暫無

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

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