首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

[]两个小疑点,高手赐教~

2012-02-20 
[求助]两个小问题,高手赐教~~~~~~~~#includestdio.hintmain(){intc,x,yx0y0c0cx++&&y++printf(

[求助]两个小问题,高手赐教~~~~~~~~
#include   <stdio.h>
int   main()
{
        int   c,x,y;
        x=0;
        y=0;
        c=0;
        c=x++&&y++;
                printf( "\n%d   %d   %d\n ",x,y,c);
}
这个程序为什么结果会是1   0   0
按理说x和y都应该是1,而是0才对啊

还有一个程序
#include   <stdio.h>
int   main()
{
        int   a=2,b=-1,c=2;
        if   (a <b)
                if   (b <0)   c=0;
                else   c+=1;
                printf( "%d\n ",c);
}
结果是2,为什么?
第二个if里的b <0是成立的呀,那么c怎么就等于2了呢??

[解决办法]
第一个 ,这个 依赖编译器的处理
第二个 else匹配的是if (b <0)这个if
所以结果是2
[解决办法]

第一个 短接,y++没有执行;
第二个 就近原则,else 与最近的if 匹配;
[解决办法]
rlj021正解。第一个是先算&&之前的部分,如果为0就不算后一部分了。
[解决办法]
后面的if-else是一对,因为a <b为否所以就直接跳到printf处执行了
[解决办法]
因为他先看x值等于0而你后面的是&&所以x++和y++都没必要执行了,如果你把&&的换成功之路||结果应该就不同了
[解决办法]
正确的缩进如下,一目了然:

#include <stdio.h>
main()
{
int a = 2, b = -1, c = 2;
if (a < b)
if (b < 0)
c = 0;
else
c += 1;
printf( "%d\n ", c);
}


热点排行