请教c c++高手

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:03:12
void main()
{
kk:int a;
scanf("%d",&a);
switch(a)
{case 1:printf("aaaa");break;
case 2:printf("bbbb");break;
default:printf("cccc");}
goto kk;
}
以上是一个很简单的程序,当输入数字时,很正常。
当输入字母时,问题就出现了。马上就像死循环一样,屏幕一直闪个不停一直输出aa……bb…….
这是不是goto语句用错了,使用goto语句时经常会出现这种情况。
请教高手这是为什么,能不能详细介绍一下goto语句。

#include <stdio.h>
void main()
{
kk:char a;
scanf("%d",&a);
switch(a)
{case 1:printf("aaaa");break;
case 2:printf("bbbb");break;
default:printf("cccc");}
fflush(stdin);
goto kk;
}

ls各位已经解释得差不多了~. 数据类型是一个问题,输入的字母是char型而你定义的是int型,c教材上有说说使用goto会出现不可预测的结果指的就是这个了(第一次见到~ 收藏先 )。 代码修改如上就没有问题了,在输出cccc之后马上清空内存缓冲区之后goto才就有时间等待scanf~

建议不要使用Goto语句,在C++中不推荐这样做!

你的goto标识应该放在scanf语句前
int a;
kk: scanf("%d",&a);
这样就对了 你不可能goto到定义一个变量,高手。
你的那种写法在我这里是编译不成功的,你怎么编译成功了。真是不可思议!

#include<stdio.h>
void main()
{
int a;
kk:scanf("%d",&a);
switch(a)
{
case 1:printf("aaaa\n");
break;
case 2:printf("bbbb\n");
break;
default:printf("cccc\n");
break;
}
fflush(stdin);