C ++中未初始化的成员布尔变量的默认值是什么?

时间:2018-08-12 07:45:27

标签: c++

考虑:

for (int counter = 1;1==1;counter++) {
            int bucky[] = new int[counter];
            int scan = oof.nextInt();
            bucky[counter-1] = scan;
            if (counter == 5) {
                System.out.println(bucky);
            }

其输出为204和true。布尔成员变量的默认值为true吗?

2 个答案:

答案 0 :(得分:2)

仅全局变量如果未显式初始化,则默认值为零。

对于局部变量,编译器不需要清理分配给它们的内存的内容。

如果给任何局部变量一个非零垃圾值(在布尔变量中其值为true),这就是您的情况。未初始化的原始数据类型具有任何值,优良作法是初始化局部变量。

答案 1 :(得分:1)

我的编译器发出警告:

main.cpp:48:27: warning: 'test1' is used uninitialized in this function [-Wuninitialized]

因此,您看不到默认值,而是内存中之前位于bool值所在的任何值。

对于非类类型,您可以使用zero-initialization来初始化您的值,这意味着对于布尔值,它会初始化为false

class Bool_tester {
    bool flag{};
    ...
}