下面程序的运行结果是( ).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/04/29 14:42:51
下面程序的运行结果是( ).y=5; x=14; y=((x=3*y,x+6),x-1); printf(
xRN@BbBu cuƷ$A#>E H?ƙvm!1эf3sn$sf #/j[V{<Φﭓ $)G> U2Rܗ[ 22TT).2/lZړ5D;ӷ*%ѬYbz,Ŕuyt >' ,>rZN h-֦y3)w߲$tk^cZGeH(!]Ђ#x&Bo[ Ar@W\;CfRmqʅg>^QNbޝX6P/@X.*c {8"A!O8x} bbύ5f/Uh jfnYB>X$* 1[0~J%CZzǽy `(^L%31s

下面程序的运行结果是( ).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.