未输入任何值时cin读取后cout输出0 16的原因咨询
C++未输入值时输出随机值的原因解析
你的代码里的int a;和int b;是未初始化的局部变量。在C++规则里,函数内部的局部变量不会自动被初始化为0或者其他固定值,它们的初始值是内存里遗留的随机垃圾数据。
当你没输入任何值就运行程序时,cin >> a >> b的读取操作会失败,这时候a和b的取值不会被修改,依然保持它们刚创建时的随机垃圾值——你看到的0 16就是这次运行时内存里刚好残留的数值,换个环境或者重新运行,输出结果可能完全不一样。
而输入正常数值时,cin成功读取到了值,会把这些值覆盖到a和b上,所以输出的就是你输入的内容,看起来正常。
如果要避免这种不确定的输出,有两个简单办法:
- 定义变量时直接初始化,比如写成
int a = 0; int b = 0;,这样就算读取失败,也会输出确定的初始值 - 加个读取状态检查,比如用
if (cin >> a >> b)判断读取是否成功,失败时可以提示用户输入错误,或者做其他处理
内容的提问来源于stack exchange,提问作者Khan Zahid Rasheed Raja
相关产品推荐
相关产品推荐

