关于结构体
  • 板块灌水区
  • 楼主happy_zero
  • 当前回复11
  • 已保存回复11
  • 发布时间2024/6/20 19:40
  • 上次更新2024/6/20 21:38:02
查看原帖
关于结构体
731925
happy_zero楼主2024/6/20 19:40

定义结构体,里面的数组/变量会自动赋值为 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 遍是没问题的。以前我都直接定义不赋值的,一直都没有问题,求助为什么上面会这样(还是说我其他地方有问题)?

2024/6/20 19:40
加载中...