我得到正方形的结果
squares = [ 512, 1, 4, 9, 16, 25, 36, 49 ]
我知道我已经达到了极限,但是512是从哪里来的呢?你能解释一下发生错误的所有步骤吗?

int main()
{
    unsigned squares[8];
    unsigned cubes[8];
    for (int i = 0; i <= 8; i++) {
        squares[i] = i * i;
        cubes[i] = i * i * i;
    }
}

最佳答案

我想说的和大家说的一样。这是undefined behavior你不应该这样做。
现在,你会问,未定义的行为是否是发生任何事情的原因。
我可能会说,是的。
现在,你可能认为这是一个简单的逃避回答问题的方法。
可能是,但是。。
这类问题的主要问题是,很难重新创建同一个案例,并调查是什么使它的行为方式。因为未定义的行为,嗯,以一种非常未定义的方式。
这就是为什么人们不尝试回答这些问题,人们建议远离未定义的行为领域。

关于c - 我对方阵有意外的结果吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37346977/

10-10 13:53