逗号运算符

问题描述

我正在尝试使用逗号运算符。 reference说:

在逗号表达式E1,E2中,对表达式E1进行求值,结果被舍弃(...),并且在开始对表达式E2求值之前,其副作用已经完成(...)。

我无法理解该子句-“ ...表达式E1被求值,其结果被舍弃(...),并且其副作用在...之前完成。”具体来说,保留什么和丢弃什么?

例如,在this SO answer的示例中:

int x = 0;
int y = some_number;
for(; x < y; ++x,--y)
{
    // Do something which uses a converging x and y
}

当我们执行++x时,“结果”是什么(被丢弃),什么是“副作用”(即“完成”并且可能是“保留”)? ++x的结果不应该被丢弃并且x的值保持不变吗?显示x递增的工作示例是here

换句话说,给定特定表达式,我如何推断它是否将被评估并且其结果将被丢弃,或者它是否是副作用并且其结果可能会被计算并保留?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)