[英]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.