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次我爱你,然后输出够了。。但是代码实际运行效果只有一次我爱你和一次够了。。请问高手哪里有问题?
展开
 我来答
sicil0973
2012-08-27 · TA获得超过490个赞
知道小有建树答主
回答量:325
采纳率:0%
帮助的人:226万
展开全部
问题出在 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可读性好很多
百度网友3038d88
2012-08-27 · TA获得超过1097个赞
知道小有建树答主
回答量:1670
采纳率:0%
帮助的人:1257万
展开全部
a == 998
而且你对循环条件理解 有错误
追问
谢谢高手。。顺便指点下这样子有哪里有问题啊?我理解的是声明个a,然后输出label语句我爱你,a计数+1,进入判断结构判断a大小,是998就直接跳到语句CC,不是的话又跳回label,最后a等于998再跳到语句CC输出enough。。。额请高手指点下下~
追答
goto本身就是个循环.
如果想判断. 就用if (a == 998) { goto label;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式