c语言问题

main()
{ int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z};
得出结果是什么?请详解!

z=x++, 此时z=1,x=2,因为x++为先赋值再自加
y++, 此时y自加,y=2,
++y; 此时y自加,y=3。
y++为先执行任务再自加,++y为先自加再执行任务,但题中无论y++或++y都是除了自加之外没有其他的操作了,作用是一样的

输出 2,3,1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-12
结果是:2,2,1\n(换行)

详解:
1、先定义整数:x,y,z;
2、赋值:x=y=1;
3、计算:z=x++,是先将X的值赋给Z,然后再自加,赋值给X,所以X=2,而Z=1
Y++,是Y自回等于2
++Y,是先自加,后赋值,等于2
由于++Y在后,所以Y的值是2(也是++Y的结果)
第2个回答  2010-01-12
main()
{ int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z};
==========================
这段程序有错。。main函数没设置返回值的类型,即使没有返回值,也要把返回值类型设置为空,改为void main()
---------------------------
printf("%d,%d,%d\n",x,y,z};输出语句有错,printf应该以()来确定输出什么,而不是(}
---------------------------
输出的结果为,2,3,1
也就是说,x=2,y=3,z=1
--------------------------
整个程序的执行过程为
1.x=y=1//x=1 y=1
2.z=x++,y++,++y//运算顺序为z=x,x++,y++,++y//z=1 x=2 y=3
3.输出x y z
相似回答