C++结构初始化断言失败

发布于 2024-11-11 17:46:06 字数 384 浏览 4 评论 0原文

#include <cassert>
#include <string>
struct AStruct 
{ 
    int x; 
    char* y; 
    int z; 
};
int main()
{ 
    AStruct structu = {4, "Hello World"};
    assert(structu.z == ???);
}

我应该写什么来代替 ??? 才能成功断言?
我使用了 assert(structu.z == 0); 但不幸的是得到了错误
int main(): 断言“structu.z == 0 failed.Aborted”

#include <cassert>
#include <string>
struct AStruct 
{ 
    int x; 
    char* y; 
    int z; 
};
int main()
{ 
    AStruct structu = {4, "Hello World"};
    assert(structu.z == ???);
}

What should I write in place of ??? to have a successful assertion?
I used assert(structu.z == 0); but unfortunately got the error
int main(): Assertion 'structu.z == 0 failed.Aborted'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

殊姿 2024-11-18 17:46:06

您想要:

 assert(structu.z == 0);

您的代码分配给 z 成员而不是测试它。如果您确实收到了编辑问题所说的消息,则说明您的编译器已损坏。是哪一个?

You want:

 assert(structu.z == 0);

Your code assigns to the z member instead of testing it. And if you did get the message your edited question says you did, your compiler is broken. Which one is it?

醉城メ夜风 2024-11-18 17:46:06

assert(structu.z == 0) 应该可以工作,因为成员 z 将会被初始化。

assert(structu.z == 0) should work because the member z would be value initialized.

梦里寻她 2024-11-18 17:46:06

我假设您所说的“成功”是指不会创建错误消息。您可能想要:

assert(structu.z == 0);

请注意,我使用的是 ==,而不是 =

该断言永远不应该触发,因为使用给定的代码,structu.z 保证等于0

By "successful", I'm assuming you mean one that doesn't create an error message. You probably want:

assert(structu.z == 0);

Note that I'm using ==, and not =.

This assertion should never trigger, because with the code given, structu.z is guaranteed to be equal to 0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文