printf("%d,%d\n",(++x,y),y++); 先输入y在输出y++ ,(++x,y)逗号运算返回最后一个即y
不同编译器,对于运算顺序没有统一,有点先y++,在(++x,y),有的相反。
++x先自加后赋值,x++先赋值后自加,y也是同理。所以x最后的值应该是12.但(++x,y)是逗号表达式最后执行的是逗号后面的语句,也就是第一个输出是y的值。所以两个输出的都是Y的值。Y虽然自加但是属先赋值后自加。y++的值仍为10。(VC编译环境)
在TC环境下,我也不太清楚,好像是先运行Y++,再运行(++x,y)吧,如果是这样的话,结果应该是11,10
是会不一样,我老师讲过有的,编译程序是从左到右读的,有的是从右到左读的!比如y=x++;有的是是从右边开始的,先自加然后赋给y;有的是先赋值,x再自加;
(++x,y)是个逗号语句,只执行逗号后面的,所以 printf("%d,%d\n",(++x,y),y++);这句话等价于: printf("%d,%d\n",y,y++);
printf("%d,%d\n",(++x,y),y++);(++x,y)这里应该是一个逗号运算符吧,他把最右值作为结果输出~!
以十进制输出。
printf()是输出函数, %d表示是以十进制