printf的有关问题

printf的问题
int x=1, y=2;
printf("%d",x,y); //输出y的值
printf("%d",(x,y));//输出x的值

为什么编译的时候不报错呢,有谁知道吗,请指教!!!!!!!!!!!!!!!!!!!



------解决方案--------------------

printf是变参函数,当参数多的时候编译器自动截断而不报错,当参数少的时候就会报错,而且是从右向左匹配。当用括号把后面的参数括起来时,参数会被看做一个整体,然后在括号内部再从左向右匹配
------解决方案--------------------
对楼主确实写错了注释了
(1)由于printf里面的%和变量的一一对应关系,所以printf("%d",x,y); 只输出x值.编译器不报错.
(2)printf("%d\n",(x,y));其中(x,y)间的那个","是逗号运算符,逗号运算符规则如下:若两个数 x,y 取y; 若n个数 a,b,c,d,.......,s 取s.所以输出y值.