我在类中声明了一个布尔变量bool abc;,并认为默认情况下它是假的.我的程序中的if条件if (abc)结果为true,所以我输出abc的值,并看到它包含值55.这是正常的吗?我们是否总是要指定'bool abc = false'以确保它是假的?
Nyl*_*ile 36
谈论原始内置数据类型(bool,char,wchar_t,short,int,long,float,double,long double),根据C++标准,如果没有显式初始化,则只有全局变量的默认值为零.
对于局部变量,编译器不需要清理分配给它们的内存内容.局部变量 - 如果没有显式初始化 - 将包含任意值.
Edw*_*nge 34
是的,您应该始终初始化变量.直到你亲密地了解它的时间并且没有必要明确地这样做,你应该一直这样做,无论如何.到那时......好吧......为什么要戒掉一个好习惯?
要将bool初始化为false,默认构造它就足够了:
struct X
{
bool b;
X() : b() {}
};
Run Code Online (Sandbox Code Playgroud)