用逗号来理解post和pre增量

use*_*495 2 c

考虑下面的程序

#include <stdio.h>
void main(){
    int p = -8;
    int i = (p++, ++p);
    printf("%d\n", i);
}
Run Code Online (Sandbox Code Playgroud)

我无法理解输出为-6的原因.

p++在赋值语句执行后++p会增加,在此之前会增加-8到-7.

怎么i分配-6?

Bin*_*eee 6

因为对于逗号运算符,A,B然后A首先完成B,然后p++递增p,并++p递增p.运算符优先级.

或者这样想

int i = (p++, ++p);
Run Code Online (Sandbox Code Playgroud)

是

p++;
int i = ++p;
Run Code Online (Sandbox Code Playgroud)