有这么一个程序 main() {int x,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,z); }

程序运行后的输出结果是多少?
答案是2,3,1请问为什么?

x赋值给z后再做的自加运算,所以z的输出值为1。
x初值为1,做一次自加运算,输出值为2。
y的初值为1,做两次自加,输出值为3。
2,3,1
你的答案是正确的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-17
2,3,3
z后面的逗号表达式,先x自加成了2,然后y自加成了2,然后++y赋值给z,z=3,y也是3
第2个回答  2010-08-17
2,3,1正解
第3个回答  2010-08-17
x=2;y=3;z=2;

main() {intx,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d\\n",x...
int x,y,z;x=y=1;z=x++,\/\/z为1,x为2 y++,\/\/y为2 ++y; \/\/y为3 printf("%d,%d,%d\\n",x,y,x);} 故输出的结果为2,3,2 注:1.z=x++,y++,++y;是一个逗号表达式 2.要理解前自加与后自加的区别

...{ int x,y,z; x=y=1;z=x++,y++,++y; printf ("%d%d%d",x,y,z...
所以这个语句:z=x++,y++,++y;实际上等于:(z=x++),(y++),(++y);这样写的话相信楼主就知道为什么z=1了吧 楼主认为z应该是3的原因应该是把z=x++,y++,++y;当成z=(x++,y++,++y);了

...main() { int x,y,z;x=y=1;z=(++x)+(++y)+(x++);printf("%d,%d,%d...
原式相当于z=n1+n2+n3 先执行n1=++x 执行后,x=2,n1=2 再执行n2=++y 执行后,y=2,n2=2 然后是n3=x++ 执行后,n3=2,x=3 最后为z=2+2+2 得z=6

...main() {int x,y,z; x=y=1; z=(++x)+(++y)+(x++); printf("%d,%d...
++x此时x=2 ++y此时y=2 x++运行时这个表达式已经是2了,运行结束后x=3 所以z = 2 + 2 + 2 = 6 所以结果是3,2,6

...{int x,y,z; x=y=1; z=x++;y=z++,x=y++; printf("%d%d%d\\n",x,y...
x=y=1; 使得变量x和y的内容都为1 z=x++; 表达式的计算结果使z的内容为x的初始值,即z的内容为1, 同时x的内容变为2 y=z++; 表达式的计算结果使y的内容为z的初始值,即y的内容为1,同时z的内容变为2 x=y++;表达式的计算结果使x的内容为y的初始值,即x的内容为1,同时y的...

...main( ) { int x,y,z; x=y=1; z=x++,y++; printf("%d,%d",x,y...
开始的时候x=1 y=1 然后z=x,x进行自加1,也就是此时的x=2 再过来y自加1,即y=2 最后把x、y的结果以十进制的形式打印出来,即 2,2

int x,y,z; x=y=1; z=x++,y++,++y; printf("%d%d%d\\n",x,y,z);
x=y=1;x,y先被赋初值为1 z=x++;x先将值1赋给z,然后x自增变为2 y++;y自增变为2 ++y;y自增变为3

...int main() { int x,y,z,t; x=y=z=1; t=++x||++y&&++z; printf...
include <stdio.h>int main(){int x,y,z,t;x=y=z=1;t=++x||++y&&++z;printf("x=%d y=%d z=%d t=%d\\n",x,y,z,t);return 0;}运行结果:x=2 y=1 z=1 t=1 你说t是怎么算的?你呢应该是迷糊t=++x||++y&&++z;这个表达式是吧 好 你要搞清楚这个问题你就得知道运算符...

int x,y,z; x=y=1; z=x+y,y++,++y; printf(%d,%d,%d\\n,x,y,z);
是1,3,2

...main() {int x,y,z x=y=1 z=x+(++y||++z)这里面,这个(++y||++z...
|| 是或运算,若两边的表达式一个为真则整个表达式为真,++y的值是2,即为真,不必判断++z,所以(++y ||++z)表达式的值为1,则z = x+1 = 2。

相似回答