
c语言基础遇见疑惑求解
intmain(){inta=0;label:printf("iloveyou\n");a=a++;while(a=998){gotocc;}gotolabel;cc:p...
int main()
{int a = 0;
label:printf("i love you\n");
a=a++;
while(a=998)
{goto cc;}
goto label;
cc:printf("it's enough\n");
return 0;
}
这是源代码。我理解的是程序输出998次我爱你,然后输出够了。。但是代码实际运行效果只有一次我爱你和一次够了。。请问高手哪里有问题? 展开
{int a = 0;
label:printf("i love you\n");
a=a++;
while(a=998)
{goto cc;}
goto label;
cc:printf("it's enough\n");
return 0;
}
这是源代码。我理解的是程序输出998次我爱你,然后输出够了。。但是代码实际运行效果只有一次我爱你和一次够了。。请问高手哪里有问题? 展开
2个回答
展开全部
问题出在 while的条件判断上:
while(a=998)里,用了赋值,你的原意应该是判断a==998才对
而对a=998判断,直接进了while循环体内,所以就执行了一次。
另外,尽量不要用goto这种调用,会绕晕的。
可以用for(int i = 0; i < 998; i++)
{
printf("i love you\n");
}
printf("it's enough\n");
比起goto可读性好很多
while(a=998)里,用了赋值,你的原意应该是判断a==998才对
而对a=998判断,直接进了while循环体内,所以就执行了一次。
另外,尽量不要用goto这种调用,会绕晕的。
可以用for(int i = 0; i < 998; i++)
{
printf("i love you\n");
}
printf("it's enough\n");
比起goto可读性好很多
展开全部
a == 998
而且你对循环条件理解 有错误
而且你对循环条件理解 有错误
追问
谢谢高手。。顺便指点下这样子有哪里有问题啊?我理解的是声明个a,然后输出label语句我爱你,a计数+1,进入判断结构判断a大小,是998就直接跳到语句CC,不是的话又跳回label,最后a等于998再跳到语句CC输出enough。。。额请高手指点下下~
追答
goto本身就是个循环.
如果想判断. 就用if (a == 998) { goto label;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询