考虑:
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吗?
答案 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{};
...
}