定义结构体,里面的数组/变量会自动赋值为 0 吗?有什么条件吗?
比如下面这段代码:
#include <bits/stdc++.h>
using namespace std;
struct node {
int w, id;
};
void query(int k, int l, int r, int L, int R) {
if (L <= l && r <= R) return;
int m = l + r >> 1; node res; cout << res.w << ' ' << res.id << '\n';
if (L <= m) query(k << 1, l, m, L, R);
if (R > m) query(k << 1 | 1, m + 1, r, L, R);
}
signed main() {
for (int i = 1; i <= 3; i++)
query(1, 1, 3, i, 3);
return 0;
}
这段代码的输出在洛谷 ide c++14 没开 O2 的时候的输出:
0 0
32764 4210080
0 0
每次中间那行的数还不一样。但是开 O2 就全是 0(正确)。但是尝试直接在主函数里定义 3 遍输出 3 遍是没问题的。以前我都直接定义不赋值的,一直都没有问题,求助为什么上面会这样(还是说我其他地方有问题)?