2

我是否正确理解boolto intcast 应该 cast trueto 1

GCC 4.8.1 对此代码给出了奇怪的结果:

#include <array>
#include <iostream>

int main()
{
    using namespace std;

    array<bool, 3> bb;
    for ( int i = 0; i < 3; i++ ) cout << static_cast<int>( bb[i] ) << endl;

    return 0;
}

这是我得到的:

>> g++ -std=c++11 test_bool.cpp  -pedantic -O3
>> ./a.out 
136
251
160
4

3 回答 3

7

我是否正确理解boolto intcast 应该 cast trueto 1

是的。

GCC 4.8.1 对此代码给出了奇怪的结果:

那是因为您的程序具有未定义的行为,因为您的数组未初始化。例如,试试这个:

array<bool, 3> bb = { true, false, true };

您将看到一致的输出。这是一个活生生的例子

于 2013-06-13T23:03:33.637 回答
1

您的bb数组未初始化,因此您的代码具有undefined behavior. 您可以看到This Demo输出不同的结果。

于 2013-06-13T23:03:43.243 回答
1

数组的值尚未初始化,因此单元格被初始化为垃圾。

于 2013-06-13T23:03:53.887 回答