为什么输出结果为8 2 8

#include<stdio.h>
int main()
{int i,j,k,a=3,b=6;
i=(--a==b++)? -a:++b;
j=a++;
k=b;
printf("%d,%d,%d\n",i,j,k);
}

--a == b++ 是假,这个判断结束后,a = 2,b = 7,然后返回++b,此时a = 2,,由于++b,b = 8
由于返回了8, i = 8
j = a++ = 2,然后才a++,a = 3;
k = b = 8;
所以i,j,k分别是8,2,8


#include<stdio.h>
int main()
{int i,j,k,a=3,b=6;
i=(--a==b++)? -a:++b;
//--a是a=a-1之后取a的值,b++是取b的值然后b=b+1,所以i=(2==6)?-a:++b,此时a=a-1=2,b=b+1=7,2==6不成立所以i=++b=8,b=8
j=a++;
//同理j=2,a=a+1=3
k=b;
//k=8
printf("%d,%d,%d\n",i,j,k);
}