#include <stdio.h>
int main(int argc, char *argv[])
{
int arr[5] = {1, 2, 3, 4, 5};
arr[6] = 7; // [1, 2, 3, 4, 5, 6]
printf("arr[6] = %d\n", arr[6]);
return 0;
}
我记得,它曾经在编译时给出警告消息,在运行时给出未知值。 (或者我可以看到段错误消息)。
所以我想知道上面的代码从哪个版本开始正常工作。
我当前的GCC版本如下:
gcc-13 (Homebrew GCC 13.2.0) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
您使用“正确工作”是错误的。为了让某些东西正常工作,必须有一个正确行为的定义 - 但没有定义,并且代码在所有版本中都有未定义的行为。