c++程序进入无限循环

                FLAG:
                int id;
                cin >> id;
                if (id == NULL)
                {
                    cout << "请输入有效的数据" << endl;
                    goto FLAG;
                }

                int id;
                FLAG:
                cin >> id;
                if (id == 0)
                {
                    cout << "请输入有效的数据" << endl;
                    goto FLAG;
                }

你是没有输入数据吧,把FLAG放到int id;后面试试。

id不可能为NULL的,你必须输入有效的数据才行。 FLAG: int id; cin >> id; if (id == 0) { cout << "请输入有效的数据" << endl; goto FLAG; }

没有人把id==NULL视为有效数据吧?按照你这个逻辑,应该是

if(id != NULL)

{

cout << "请输入有效的数据" << endl;

 

goto FLAG;

}

明白你意思了。就你现在的问题,主要是没有对id进行初始化,你只要改成 int id = 0;代码就可以正常了。另外在cin之后要增加清除缓冲区的代码,否则会连续提示输入有效数据

但是goto语句并不推荐,因此建议你这么修改。

	int id = 0;
	do
	{
		cin >> id;
		while (getchar() != '\n'); //清除输入缓冲区,比如你输入aaaaaa的话
		if (id == 0)
			cout << "请输入有效的数据" << endl;
	} while (id == NULL);

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632