编译时出错:错误终止,原因是信号: ABORT TRAP (6)
#include <iostream>
using namespace std;
int main()
{
int j, r = 2, p = 1;
int v[8];
for (j = 0; j < 8; j++)
{
v[j - p] = 3 * j - r;
p = -p;
r = r - p;
}
for (j = 0; j < 8; j++)
cout << v[j] << " ";
}
发布于 2021-04-29 03:28:49
您的程序调用未定义的行为,当j
为0时,您将在v[-1]
中编写,数组没有负索引。
也就是说,您的代码中没有任何东西会阻止它进行编译。
发布于 2021-04-29 03:29:01
至少这句话
v[j - p] = 3 * j - r;
调用未定义的行为,因为当例如当j
等于0
且p
等于1
时,或者当j
等于7
且p
等于-1
时,试图访问数组之外的内存。在这些情况下,您将获得对数组v
无效的索引-1
和8
。
因此,程序在运行后会中止。
https://stackoverflow.com/questions/67306659
复制相似问题