我在许多示例中看到它是这样写的:
#define N 5
....
int a[N], *p;
....
for (p = &a[0]; p < &a[N]; p++);
很明显a[N]
不存在,那么为什么编译器没有给出任何警告(如超出范围)或错误,或者它是否调用 UB?
我在许多示例中看到它是这样写的:
#define N 5
....
int a[N], *p;
....
for (p = &a[0]; p < &a[N]; p++);
很明显a[N]
不存在,那么为什么编译器没有给出任何警告(如超出范围)或错误,或者它是否调用 UB?