没看题
开个 O2 试试?ub 过题正常现象(
> 任何情况下,如果(左移右移运算)运算**右操作数的值为负或大于等于提升后左操作数中的位数**,那么行为未定义。
by y_kx_b @ 2023-10-11 11:41:50
@[y_kx_b](/user/592895) 可是i从0开始循环,而g那一行显然访问了i-1啊
by ImposterAnYu @ 2023-10-11 14:11:42
@[ImposterAnYu](/user/510555) 照理来说数组是开在一起的所以你访问 `g[-1]` 应该访问的是 `f[N + 4]`(?)
当然这是没开 O2 的情况下。开了 O2 可能就直接 re 了。或者说你把 f 和 g 的定义换一下说不定就寄了()
ub 之后一切都有可能。
by y_kx_b @ 2023-10-11 15:06:08
```cpp
int f[10], g[10], h[10];
int main() {
rep(i, 0, 29) h[-i] = i;
cout << g[0];
return 0;
}
```
输出 `16`。/oh
by y_kx_b @ 2023-10-11 15:09:34
@[y_kx_b](/user/592895) 草,好神奇
by ImposterAnYu @ 2023-10-11 15:12:32