由cin引起的运行时错误
Runtime error caused by cin?
#include <iostream>
using namespace std;
int main(){
int N,unit_distance,total_distance,gas_number,sum_of_distance,giant_number,temp;
bool reach;
cin >> N;
for (int all=0;all<N;all++)
{
reach =true;
sum_of_distance=0;
cin >> unit_distance >> total_distance >> gas_number;
int gas[gas_number+1];
for (int i=0;i<gas_number;i++)
cin >> gas[i];
gas[gas_number] = total_distance;
// cin >> giant_number;
}
return 0;
}
这是我的问题代码的一部分。问题是行"cin>> giant_number"在在线判断上导致运行时错误,只要删除这行代码就可以成功运行而不会出现运行时错误。我真的不明白为什么一个"cin"代码会导致运行时错误。同时,当我在Xcode中运行它时,问题不存在。
您从未检查您的输入是否成功。如果输入一个非数字,尝试读取一个整数将失败,您将得到一些奇怪的值。确保您验证输入是成功的,并且根据值的使用方式,在相同的范围内,例如:
if (std::cin >> gas_number && gas_number < max_gas_number) {
std::vector<int> gas(gas_number + 1);
// ...
}
还请注意,你发布的代码不是c++: c++中没有动态大小的数组。
数字类型的变量存储在内存中。例如,int
存储在4字节中,其可能的值范围为:
–2,147,483,648 to 2,147,483,647
我认为您键入的数字太大,超出了类型。如果这个范围对您来说不够,您可以使用__int64
,例如,它具有以下可能的值范围:
–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
,因为它被存储在8个字节中。
__int64
不是标准的,因此我建议阅读这篇文章:c++中的固定宽度整数
阅读更多:http://msdn.microsoft.com/en-us/library/s3f49ktz.aspx
相关文章:
- 删除指向指针的指针是运行时错误吗
- c++中的指针和运行时错误
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- 对单向链表进行排序时出现运行时错误
- 为什么此代码存在运行时错误?
- 你能解释一下什么运行时错误是如何解决它的吗?
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 为什么程序在 c++ 中迭代 emtpy 向量时会抛出运行时错误
- 运行时错误:引用绑定到类型为"int"的空指针
- 为什么当 vector 为空时会显示运行时错误?
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 运行时错误:矢量下标超出范围:正在检查空集
- 分配给gslice_array会导致运行时错误
- cout 新创建的对象引发运行时错误
- C++在使用std::multimap时出现运行时错误的几率很小
- 运行时错误:引用绑定到类型"int"的未对齐地址0xbebebebebebebec6,这需要 4 个字节对齐 (stl_vector.h)
- 试图找出为什么我会收到运行时错误?
- 迭代二维矢量时发生运行时错误
- 由cin引起的运行时错误