问题:
解答:
#include <iostream>
using namespace std;
#define LONG_TO_MA 220
int main()
{
double distance = 0;
cout << "请输入距离(单位为long):";
while (true)
{
cin >> distance;
if (cin.fail())
{
cout << "输入有误!请输入数字:";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
else
{
break;
}
}
double res = distance * LONG_TO_MA;
cout << distance << "long=" << res << "码"<<endl;
return 0;
}
运行结果:

考查点:
- 变量
- 宏定义的符号常量
- 数据类型
- 死循环
- break
- 输入错误标志
- *运算符
注意:
- 当输入错误时,会产生错误标志,变量就读不到输入缓冲区的数据了,我们需要先清除错误标准用
cin.claer().
但是输入缓冲区的数据肯定不是我们想要的,不然不会出现错误标志,所以我们要清理缓冲区用cin.ignore(),numeric_limits< streamsize >::max()的意思是尽可能的清理,直到运到\n也就是回车符,相当于缓冲区全部清空.

- 宏定义的符号常量在预处理的时候就会将其替换成后面的内容

2024年8月22日20:00:01




![Vivado生成bitstream时报[DRC CFGBVS-1]警告的问题](https://i-blog.csdnimg.cn/direct/8c129aa4f9f1458f83f7a51a159c612f.png)














