编译时出错:错误-[因信号终止: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] << " ";
}
您的程序调用未定义的行为,当j
为0时,您将在v[-1]
中写入,数组没有负索引。
也就是说,您的代码中没有任何内容可以阻止它进行编译。
至少这个语句
v[j - p] = 3 * j - r;
调用未定义的行为,因为当例如j
等于0
且p
等于1
时或者当j
等于7
且p
等于-1
时。在这些情况下,您将获得对数组v
无效的索引-1
和8
。
因此,程序在运行后中止。