求助!结构体的变量默认不为0

P1201 [USACO1.1] 贪婪的送礼者Greedy Gift Givers

您数组开的是局部,局部变量随机初始值不是很正常吗?
by _caiji_ @ 2021-03-09 00:03:24


@[TCEH920106840230](/user/483691) 没有任何语法规则规定结构体的成员初始值应为0。 事实上是这样:你的person类没有定义默认无参构造函数,那么编译器将为它合成一个默认无参构造函数,该构造函数对内置类型成员执行**默认初始化**,对类类型成员调用相应的默认无参构造函数进行初始化。内置类型“默认初始化”的结果是一个未定义的值,而不是一定是0。 当你定义person类型的数组并且没有显式初始化时,将会调用person类的默认构造函数进行初始化,所以这些成员都是未定义的值。
by GKxx @ 2021-03-09 00:03:47


连发两相同贴占主页危
by 求学的企鹅 @ 2021-03-09 00:07:24


主页双贴,危 另外,楼说对
by 地狱石QAQ @ 2021-03-09 00:14:47


全局变量的初始值才是0,局部变量的初始值是随机的
by yangyi2120 @ 2021-03-09 08:32:38


主页双贴,危
by 天南星魔芋 @ 2021-03-09 08:53:37


@[GKxx](/user/72071) 什么是默认无参构造函数,我的原意是想规定一个结构体,结构体和函数之间有关联吗,然而如果我在定义结构体时直接将shou=0也会出现警告,但运行结果正确
by TCEH920106840230 @ 2021-03-09 10:48:50


@[TCEH920106840230](/user/483691) 建议百度“构造函数”。
by ZYyboT @ 2021-03-09 11:09:55


@[TCEH920106840230](/user/483691) 直接将`shou=0`是所谓的“类内初始值”,这是C++11引入的新特性,在C++11以前是没有的,如果你使用C++11以前的编译器自然会报warning或者error。 结构体和函数之间当然有联系,你写的是C++又不是C。如果不知道什么是构造函数建议先百度
by GKxx @ 2021-03-09 13:43:06


|