下面程序的运行结果是( ).y=5; x=14; y=((x=3*y,x+6),x-1); printf("x=%d,y=%d",x,y);这个逗号表达式不需要计算X+6吗?第一个表达式的结果是21,那X-1的时候X还是取15?为什么?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/13 19:00:49
下面程序的运行结果是( ).y=5; x=14; y=((x=3*y,x+6),x-1); printf(

下面程序的运行结果是( ).y=5; x=14; y=((x=3*y,x+6),x-1); printf("x=%d,y=%d",x,y);这个逗号表达式不需要计算X+6吗?第一个表达式的结果是21,那X-1的时候X还是取15?为什么?
下面程序的运行结果是( ).y=5; x=14; y=((x=3*y,x+6),x-1); printf("x=%d,y=%d",x,y);
这个逗号表达式不需要计算X+6吗?
第一个表达式的结果是21,那X-1的时候X还是取15?为什么?

下面程序的运行结果是( ).y=5; x=14; y=((x=3*y,x+6),x-1); printf("x=%d,y=%d",x,y);这个逗号表达式不需要计算X+6吗?第一个表达式的结果是21,那X-1的时候X还是取15?为什么?
计算了,但是返回了x=3*y的值,因为x+6是表达式而不是赋值语句,执行前后不改变x的值,执行过程大致是这样,y=((x=3*5,x+6),x-1);=((x=15,x+6),x-1)=((15,21),15-1)=(21,14)=14.返回14.如果想要改变x的值必须使用赋值语句例如y=((x=3*y,x+6),x-1); 改为y=((x=3*y,x+=6),x-1);那么就是y=((x=15,x+=6),x-1)=((15,x=15+6),x-1)=((15,21),21-1)=(21,20)=20结果就是x=21,y=20.