社区讨论
关于 struct 初始未赋值
学术版参与者 6已保存回复 12
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 12 条
- 当前快照
- 1 份
- 快照标识符
- @lovep9op
- 此快照首次捕获于
- 2023/11/12 19:42 2 年前
- 此快照最后确认于
- 2023/11/12 21:11 2 年前
首先我定义了一个
CPPstruct,如下: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 条回复,欢迎继续交流。
正在加载回复...