我是否理解bool
至int
演员应该true
投放到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
答案 0 :(得分:7)
我是否理解
bool
至int
演员应该true
投放到1
?
是
GCC 4.8.1为此代码提供了奇怪的结果:
这是因为您的程序有未定义的行为,因为您的数组未初始化。例如,试试这个:
array<bool, 3> bb = { true, false, true };
你会看到一致的输出。这是live example。
答案 1 :(得分:1)
您的bb
数组未初始化,因此您的代码为undefined behavior
。您可以看到This Demo输出不同的结果。
答案 2 :(得分:1)
数组的值尚未初始化,因此使用垃圾初始化单元格。