黑马程序员技术交流社区

标题: if等式问题 [打印本页]

作者: 肖伟    时间: 2014-7-25 07:30
标题: if等式问题
本帖最后由 肖伟 于 2014-7-27 00:08 编辑

int main()
{
    int x=10, y=20, t=0;
    if (x==y) t=x; x=y; y=t;
    printf("%d,%d\n",x,y);
    return 0;

}
运行结果20,0
x不是不等于y 等式不成立么,为什么还执行了???

作者: 依然超级赛亚人    时间: 2014-7-25 08:02
本帖最后由 依然超级赛亚人 于 2014-7-25 08:03 编辑

这道题,if语句后面的三句代码应该用大括号{}一块括起来,否则它只默认执行它后面的第一句。这道题的执行顺序是:进行if括号中的判断后,二者因为不相等,所以赋值语句t=x根本不会被执行,而是接着执行后面那两句。也就是先把y的值赋给了x,此时x=20.然后把t的0赋给y,所以输出时得到你所见到的结果。
作者: AndyWang    时间: 2014-7-25 08:21
楼上正解  
作者: 温天恩    时间: 2014-7-25 15:06
这都可以得分啊。。。真是玩排版游戏啊。
作者: 枫·殇    时间: 2014-7-26 09:53
if的作用范围不一样,它只到t=x
作者: istream    时间: 2014-7-26 10:12
温天恩 发表于 2014-7-25 15:06
这都可以得分啊。。。真是玩排版游戏啊。

三点多还不睡?太拼命了,赞一个
作者: 肖伟    时间: 2014-7-26 23:42
依然超级赛亚人 发表于 2014-7-25 08:02
这道题,if语句后面的三句代码应该用大括号{}一块括起来,否则它只默认执行它后面的第一句。这道题的执行顺 ...

谢谢》。。已经解决了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2