不确定这个while语句在做什么

时间:2013-07-06 05:03:08

标签: c++ while-loop

所以,我正在做作业。我遇到过一些我以前没见过的东西,也找不到合适的解释。基本上,

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

while语句中的(value1,value2)确实引发了我的注意。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

它是逗号运算符。

逗号运算符的结果是最后一个值(其他值被评估并丢弃)。

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

如果value1只是一个变量而不是表达式,那么它也是等价的:

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

如果value1是表达式,则每次循环时都会对其进行求值。结果被丢弃,但如果表达式有副作用,这些将生效。