A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 离渊 中级黑马   /  2014-3-10 22:24  /  1452 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 离渊 于 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    想不通 求分析···

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 张海龙重新起航 于 2014-3-10 22:48 编辑

x=x+1=2,y=y=1
回复 使用道具 举报
本帖最后由 z82454642 于 2014-3-10 22:40 编辑

你用的时if语句,程序运行到if语句时先判断x是否等于2,然后x+1。这时条件不成立程序直接跳到printf输出了所以x=2,y=1

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
&& 逻辑运算符,也可看作是短路运算
if 的条件中首先判断x++ 是否等于2 ,如果等于2 才会继续判断 运算符后面的 ++y;
你条件中 x++ 等于2 的判断不成立 ,仅仅是把 x 加一操作,并没有在执行 ++y  也就是 ++y 被短路了。
所以结果就是 x =2 y=1

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报 1 0
恍然大悟状 ( ¯ □ ¯ )  谢谢各位解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马