后增量运算符行为与逗号运算符?

Kai*_*ind 4 c++ comma post-increment

在以下代码中:

int main() {
   int i, j;

   j = 10;
   i = (j++, j+100, 999+j);

   cout << i;

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出为1010

但是,它不应该是 1009,就像++在使用整个表达式之后应该做的那样吗?

Bri*_*ian 8

逗号运算符是一个序列点:例如,正如在 C++17 标准中所说,

与左表达式关联的每个值计算和副作用在与右表达式关联的每个值计算和副作用之前排序。

因此,++运算符的效果保证在999+j评估之前发生。