下面程序的运行结果是( ).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/06/27 14:00:36
![下面程序的运行结果是( ).y=5; x=14; y=((x=3*y,x+6),x-1); printf(](/uploads/image/z/6455345-41-5.jpg?t=%E4%B8%8B%E9%9D%A2%E7%A8%8B%E5%BA%8F%E7%9A%84%E8%BF%90%E8%A1%8C%E7%BB%93%E6%9E%9C%E6%98%AF%EF%BC%88+%EF%BC%89.y%3D5%3B+x%3D14%3B+y%3D%28%28x%3D3%2Ay%2Cx%2B6%29%2Cx-1%29%3B+printf%28%22x%3D%25d%2Cy%3D%25d%22%2Cx%2Cy%29%3B%E8%BF%99%E4%B8%AA%E9%80%97%E5%8F%B7%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%8D%E9%9C%80%E8%A6%81%E8%AE%A1%E7%AE%97X%2B6%E5%90%97%3F%E7%AC%AC%E4%B8%80%E4%B8%AA%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E7%BB%93%E6%9E%9C%E6%98%AF21%2C%E9%82%A3X-1%E7%9A%84%E6%97%B6%E5%80%99X%E8%BF%98%E6%98%AF%E5%8F%9615%3F%E4%B8%BA%E4%BB%80%E4%B9%88%3F)
下面程序的运行结果是( ).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.