2013-07-06 24 views
0

所以,我正在做功課。我遇到過一些我從未見過的東西,無法找到一個合適的解釋。基本上,不確定這個while語句正在做什麼

Object object; 
... 
while((value1, value2) = function(object)) { 
    object.foo(value1, value2); 
} 

while語句中的(value1,value2)真的引發了我。有任何想法嗎?

+1

您可以通過搜索「逗號運算符」來找到答案。 [Here's one](http://stackoverflow.com/q/54142/1016716) –

+0

還沒有試過。這是規範的一部分。不知道該怎麼做 – mcallinder

+1

其他人回答了它的作用。我只想評論 - 從不這樣做。它令人困惑,並沒有帶來任何價值,有更清晰的寫法。這基本上是一個愚蠢的C++技巧問題。 –

回答

1

它是一個逗號運算符。

逗號運算符的結果是最後一個值(其他值被評估和丟棄)。

while((value1, value2) = function(object)) { 
    object.foo(value1, value2); 
} 

如果值1僅僅是一個變量而不是一個表達式然後它相當於太:

while(value2 = function(object)) { 
    object.foo(value1, value2); 
} 

如果VALUE1然後表達圍繞環路每次它被評估。結果被丟棄,但如果表達式有副作用,這些將會生效。