C语言选择题,求大神帮忙给个解析,谢谢了。

如题所述

定义 x=10 y=20 z=30
如果 10>20 则 z=10:x=20:y=30:
很明显10>20是flash 所以后面的语句z=10不执行
但是x=20,y=30执行
打印 x,y,z 打印20 30 30追问

为什么z=10不执行呢

if(x>y)相当于10>20这是假,不成立啊,应该跳出循环直接输出啊,怎么还执行z=x,x=y,y=z呢

追答

z=x是不执行的。if(x>y) z=x;注意这个分号的作用,分号的作用是换行的。
if(x>y) z=x
x=y
y=z
这么说你能理解吗?后面两个是独立的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-14
针对于以前别人回答的答案内有争议的题目现将正确答案解答如下:27题正确答案应该是C29题正确答案应该是B追问

针对你是否被阿猫阿狗轮过这个问题,已经天知地知我知你不知,所以我要告诉你,哈哈,笑死我了

第2个回答  2017-03-14
这种题其实出的很无聊啊,主要是代码就不规范,很误导人啊。if语句如果不加{}作用域的话,只作用第一个分号。因为x>y,条件为假,所以z=x不执行,只执行x=y,此时x=20,然后执行y=z,此时y=30。所以结果为20,30,30。追问

为什么不执行z=x,三个表达式不是一起的吗

if(x>y)相当于10>20这是假,不成立啊,应该跳出循环直接输出啊,怎么还执行z=x,x=y,y=z呢