2013-07-06 25 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然后表达围绕环路每次它被评估。结果被丢弃,但如果表达式有副作用,这些将会生效。