帮忙解释下这道C语言题为什么最后结果是20?

来源:百度知道 编辑:UC知道 时间:2024/05/26 01:24:13
#include<stdio.h>
main()
{int a=0,y=10;
if(a=0)y--;
else if(a>0)y++;
else y+=y;
printf("%d",y);
}

#include<stdio.h>
main()
{int a=0,y=10;
if(a=0)y--; //你这里是 if(a=0) 而不是 a==0 . a=0是赋值语句,所以这条件相当于if(0)
else if(a>0)y++; //这条件肯定也不满足
else y+=y; //只能执行这个了,这个相当于: y=y+y 这不就是20了么
printf("%d",y); //输出上面那个计算结果。。。
}

int a=0,y=10; 赋值
if(a=0)y--; 如果a是0那么y自己减1即是9
else if(a>0)y++; 如果上面的条件不符合那么在a>0的时候y自己+1即11
else y+=y; 如果以上2个条件都不符合那么 y = y+y即自己+自己然后在给自己此时y=20
printf("%d",y);打印y的值

这样注释明白了吗?

if(a=0)不是if(a==0),
它是让a=0,再判断a是否为真,0当然是假,所以跳到else
if(a>0),因为a为0了,所以不成立,再跳到下个else
执行y+=y,就是10+10=20了

if(a=0)出错了,应该是if(a==0)的吧

if(a=0)相当于a=0;if(a)y=y-1,而a的值为0所以跳过这个if,下个if也一样a是0不满足大于0,这时y任然是10,然后直接y+=y;即y=y+y,这时y等于20~

tanyuguo和我意见一样~