声明的浮点数组的大小是suing auto与实际大小不同.为什么会这样?
例如:
宣言:
float duto[] = {2.2222f,2.223f,34.5f,1.0f,9.0f};
auto dutot = {2.2222f,2.223f,34.5f,1.0f,9.0f};
Run Code Online (Sandbox Code Playgroud)
尺寸打印:
std::cout << " float array size v: " << sizeof(duto)<<std::endl;
std::cout << " auto v: " << sizeof(dutot)<<std::endl;
Run Code Online (Sandbox Code Playgroud)
输出:
float array size v: 20
auto v: 16
Run Code Online (Sandbox Code Playgroud)
auto dutot = {2.2222f,2.223f,34.5f,1.0f,9.0f};
auto这里实际上是推断为initializer_list<float>.所以你打印的大小initializer_list<float>.
我刚刚initializer_list在ubuntu 14.04 上看了g ++ 4.8.2 中的实现.它包含两个成员_M_array和_M_len._M_array是一个指针,_M_len的类型是size_t.所以我猜你的机器是64位.因为指针和size_t通常是64位平台上的8个字节.