社区讨论

关于 struct 初始未赋值

学术版参与者 6已保存回复 12

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
12 条
当前快照
1 份
快照标识符
@lovep9op
此快照首次捕获于
2023/11/12 19:42
2 年前
此快照最后确认于
2023/11/12 21:11
2 年前
查看原帖
首先我定义了一个 struct,如下:
CPP
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 使用不规范而导致的?

回复

12 条回复,欢迎继续交流。

正在加载回复...