回 帖 发 新 帖 刷新版面

主题:[求助]两个小问题~~~~~~~~~~~~~~~~~~~~~~~

#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了呢??

回复列表 (共2个回复)

沙发

#include <stdio.h>
int main()
{
    int c,x,y;
    x=0;
    y=0;
    c=0;
    c=x++&&y++;//这里把x=0取出而后自加一,编译器看到x=0为假因为 x++&&任何
               //恒等于0,所以编译器便不再执行y++(提高效率),然后把0赋予c
        printf("\n%d %d %d\n",x,y,c);//所以x=1,y=0,c=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);
}
a<b这个条件 显然为假 所以直接输出C了 就是2

我来回复

您尚未登录,请登录后再回复。点此登录或注册