如何在C中评估以下代码?

a87*_*874 2 c

我遇到了一个代码片段,其中使用了一个语句int k=(a++,++a).我不明白这是什么类型的陈述(a++,++a)以及如何评估它.为什么在这里使用支架?这是函数调用吗?

这是代码.

#include <stdio.h>
int main(void) {
    int a=5;
    int k=(a++,++a);
    printf("%d\n",k);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是7 - 为什么?

Joh*_*ode 6

这不是函数调用.

这是使用逗号运算符的示例,它从左到右计算每个表达式并返回最右侧表达式的结果.这和写作一样

a++;
k = ++a;
Run Code Online (Sandbox Code Playgroud)

如果已经写好了

k = a++, ++a;
Run Code Online (Sandbox Code Playgroud)

然后它会被解析为

(k = a++), ++a;
Run Code Online (Sandbox Code Playgroud)

并评估为

k = a++;
++a;
Run Code Online (Sandbox Code Playgroud)