2013-08-06 65 views

回答

14

在C++中,++++i編譯,因爲前綴operator++返回一個左值。但是,使用這個瘋狂增量運算符仍然不可取,因爲它調用了UB。

我是一個C的傢伙,這是標記C作爲好,所以這是值得指出的是,這是在C語言不同,在這種情況下,答案是:

沒有,++++i不允許。

就是這些。

+2

它確實在C++中工作(或者編譯和運行) – FDinoff

+0

@FDinoff我不會說C++ :) – 2013-08-06 19:31:07

+3

@FDinoff:它(可能)在大多數C編譯器中編譯和運行 - 並不意味着它是「有效的和合法的「 - 或者必然它給出了正確的答案(基於假設我們實際上想要的是當鍵盤沒有2或者這種代碼的藉口時實現'i + = 2')。 –

8

其實都是錯誤的(如前所回答的),但是第一個偶是不可編譯的,cuz後綴++需要一個左值,但前綴++返回臨時值。第二個,儘管可調性,是違反規則:之間的序列點,你可以只修改一次變量。顯然,在這裏你試圖修改i兩次!

+1

前綴'++'如何返回臨時? – juanchopanza

+0

@juanchopanza'rvalue'換句話說 – zaufi

+1

但它不返回一個右值。 – juanchopanza