声明的浮点数组的大小是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};
尺寸打印:
std::cout << " float array size v: " << sizeof(duto)<<std::endl;
std::cout << " auto v: " << sizeof(dutot)<<std::endl;
输出:
float array size v: 20
auto v: 16
答案 0 :(得分:9)
auto dutot = {2.2222f,2.223f,34.5f,1.0f,9.0f};
auto
这里实际上推断为initializer_list<float>
。所以你要打印initializer_list<float>
的大小。
我刚刚在我的ubuntu 14.04上看了g ++ 4.8.2中的initializer_list
实现。它包含两个成员_M_array
和_M_len
。 _M_array
是一个指针,_M_len
的类型是size_t。所以我猜你的机器是64位。因为指针和size_t通常是64位平台上的8个字节。