关于 struct 初始未赋值
  • 板块学术版
  • 楼主Setoff
  • 当前回复12
  • 已保存回复12
  • 发布时间2023/11/12 19:41
  • 上次更新2023/11/12 21:11:22
查看原帖
关于 struct 初始未赋值
124628
Setoff楼主2023/11/12 19:41

首先我定义了一个 struct,如下:

struct msg {
	u64 s, x, y, xy;
	
	msg() {}
	msg(u64 _s, u64 _x, u64 _y, u64 _xy): s(_s), x(_x), y(_y), xy(_xy) {}
	
	msg operator + (const msg &g) const { return msg(s + g.s, x + g.x, y + g.y, xy + g.xy); }
};

在后面的函数内容中,我定义了 msg ans, 随后进行了语句 ans = ans + ...,在本地发现输出错误后,我在 msg ans 后面加上了 assert(ans.s == 0),再次测试时答案输出正确。删去 assert 后紧接着我又将构造函数改成了 msg(): s(0), x(0), y(0), xy(0) {},答案也是正确的。

在 Luogu IDE 上测试时发现如果不修改构造函数,进行 assert 语句后显示运行时错误。

所以想请教各位,这样的问题是如何发生的,是否是 struct 使用不规范而导致的?

2023/11/12 19:41
加载中...