为什么结果是3,3啊

有如下程序
#include
void main()
int y=3,X=3,z=1;
printf("%d %d\n",(++x,y++),z+2)
运行该程序的输出结果是
A.3 4
B.4 2
C.4 3
D3,3

      D.3 3

printf("%d %d\n",(++x,y++),z+2)

这句话就是输出2个int值,z+2为3,然后前面是括号内的是输出后一个值,y++是先输出在自加,所以是3,如果将++x 和y++的位置互换,则输出4,3

逗号表达式(++x,y++)从左向右计算,该表达式值为最右边表达式的值,应该是y++的值,由于y++是先引用后自增,所以y++的值是3;z+2的值是3,所以是D.3 3