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?
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
.
精彩评论