#include "iostream"
using namespace std;
int main(int argc, char const *argv[])
{
int n=100000;
int cost=6;
for (int i = 1; i <= n; ++i)
{
cout<<cost<<endl;
}
return 0;
}
在ideone.com(使用SPOJ编译器的在线g ++编译器)上编译和运行时,上述程序会产生运行时错误。注释掉cout
行后,程序将成功运行。有人可以指出相同的原因吗?
答案 0 :(得分:5)
正如pts在他的评论中指出的那样,ideone.com对你可以打印的字节数有限制。如果将n更改为10000,则代码运行正常。
不会给出编译错误的最大n值是2 ^ 15 = 32768。
如果仔细观察,可以看到它终止于信号:25,SIGXFSZ。您可以查看this page以了解信号的含义。
SIGXFSZ 25超出文件大小限制(4.2 BSD)
答案 1 :(得分:0)
理论上如果int
是您平台上的两个字节(标准允许),这可能会溢出。但最有可能的错误是由于ideone.com
的输出大小限制。学习解释错误信息:它们是你的朋友,并且与所需的程序输出一样重要。