问题描述
|
#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
。