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

问题描述

|
#include <cassert>
#include <string>
struct AStruct 
{ 
    int x; 
    char* y; 
    int z; 
};
int main()
{ 
    AStruct structu = {4,\"Hello World\"};
    assert(structu.z == ???);
}
我应该写什么代替write1来拥有成功的断言? 我用了
assert(structu.z == 0);
,但不幸的是得到了错误
int main(): Assertion \'structu.z == 0 Failed.Aborted\'
    

解决方法

        你要:
 assert(structu.z == 0);
您的代码将分配给z成员,而不是对其进行测试。而且,如果您确实收到了您所编辑的问题说的信息,则说明编译器已损坏。哪一个?     ,        
assert(structu.z == 0)
应该起作用,因为将对成员
z
进行值初始化。     ,        通过“成功”,我假设您的意思是不会创建错误消息的人。您可能想要:
assert(structu.z == 0);
请注意,我使用的是
==
,而不是
=
。 该断言永远不会触发,因为使用给定的代码,可以保证ѭ10to等于
0
。