黑马程序员技术交流社区

标题: 求教一个 if语句里的问题 [打印本页]

作者: 离渊    时间: 2014-3-10 22:24
标题: 求教一个 if语句里的问题
本帖最后由 离渊 于 2014-3-11 08:57 编辑

    int x = 1,y = 1;
    if(x++==2 && ++y==2) {
        x =7;
    }
    printf("x=%d, y=%d\n", x, y);

结果为 x =2 y=1    想不通 求分析···


作者: 张海龙重新起航    时间: 2014-3-10 22:37
本帖最后由 张海龙重新起航 于 2014-3-10 22:48 编辑

x=x+1=2,y=y=1
作者: z82454642    时间: 2014-3-10 22:38
本帖最后由 z82454642 于 2014-3-10 22:40 编辑

你用的时if语句,程序运行到if语句时先判断x是否等于2,然后x+1。这时条件不成立程序直接跳到printf输出了所以x=2,y=1
作者: Silent_memory    时间: 2014-3-10 22:53
&& 逻辑运算符,也可看作是短路运算
if 的条件中首先判断x++ 是否等于2 ,如果等于2 才会继续判断 运算符后面的 ++y;
你条件中 x++ 等于2 的判断不成立 ,仅仅是把 x 加一操作,并没有在执行 ++y  也就是 ++y 被短路了。
所以结果就是 x =2 y=1
作者: 离渊    时间: 2014-3-11 08:56
恍然大悟状 ( ¯ □ ¯ )  谢谢各位解答




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