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

© 15098037606 中级黑马   /  2015-4-16 17:27  /  2247 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 15098037606 于 2015-4-16 18:04 编辑

1>        第一题
int x = 1,y = 1;

if(x++==2 && ++y==2)
{
    x =7;
}

printf("x=%d, y=%d\n", x, y);

输出是x=2, y=1

2>        第二题
int x = 1,y = 1;

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

输出是x=7, y=2

3>第三题

int x = 1,y = 1;

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

输出是x=2, y=2
第三题我理解对了,第一二题我理解错了,谁帮我分析一下?

7 个回复

倒序浏览
sunyang 发表于 2015-4-16 17:32
题目2 ||只要满足一个条件就认为满足条件,y=2,所以会执行括号里面的.

——————————————— ...

第一题为什么输出y是1不是2呢?
回复 使用道具 举报
sunyang 发表于 2015-4-16 17:40
第一题&&后面的语句不执行,判断条件一不满足之后,条件二就会跳过,这是为了执行效率进行的编译优化 ...

比较一下,第一题和第三题的区别。一个&和两个&的区别?
回复 使用道具 举报
sunyang 发表于 2015-4-16 17:54
是的,只有两个& 的运算符的时候才具有”短路“功能

按你说的方法,帖子改为已解决。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马