相关疑难解决方法(0)

使用未初始化的变量和编译器(GCC)的乐趣

C++标准的第3.9.1/6节说,

bool类型的值是true或者false.

现在考虑这段代码,

void f(bool b)
{
    switch(b) //since b is bool, it's value can be either true or false!
    {
        case true: cout << "possible value - true";  break;
        case false: cout << "possible value - false"; break;
        default: cout << "impossible value";
    }
}
int main()
{
    bool b; //note : b is uninitialized
    f(b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

F:\workplace>g++ test.cpp -pedantic

跑.输出:

不可能的价值

出乎意料的输出?嗯,不是真的,因为标准在§3.9.1/ 6的脚注中读到:

以本国际标准描述的方式将bool值用作 "未定义",例如通过检查未初始化的自动对象的值,可能会使其表现为既不是真也不是假 …

c++ compiler-construction gcc initialization undefined-behavior

17
推荐指数
1
解决办法
2621
查看次数

当我打印未初始化的变量时,为什么会看到奇怪的值?

在以下代码中,变量没有初始值并打印此变量.

int var;
cout << var << endl;
Run Code Online (Sandbox Code Playgroud)

输出:2514932

double var;
cout << var << endl;
Run Code Online (Sandbox Code Playgroud)

输出:1.23769e-307

我不明白这些输出数字.任何人都可以向我解释一下吗?

c++ variables initialization c++-faq

13
推荐指数
2
解决办法
7771
查看次数

使用cout打印未初始化的bool(C++)

我有一个类,其中一个bool数据成员未被构造函数初始化.如果我做

cout << x.myBoolDataMember;
Run Code Online (Sandbox Code Playgroud)

x这个类的对象在哪里bool尚未初始化,我有时得到一个随机数而不是0或1.(我正在使用gcc.)这种行为是否符合Standard

c++ cout initialization ostream

8
推荐指数
1
解决办法
1294
查看次数