开发者

C++ struct initialization assertion fails

#include <cassert>
#i开发者_如何学运维nclude <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'


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?


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


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜