所以我做了一些测试用新的数据类型很长很长,当我偶然发现了一个小"问题"(例如在C++来底漆第6版).我正在使用climbits库来告诉我长和长支持的最大数量,两者都出现在9223372036854775807.这怎么可能?
#include <iostream>
#include <climits>
int main()
{
std::cout << "int size is " << sizeof(int) << " bytes." << std::endl;
std::cout << "short size is " << sizeof(short) << " bytes." << std::endl;
std::cout << "long size is " << sizeof(long) << " bytes." << std::endl;
std::cout << "long long size is " << sizeof(long long) << " bytes." << std::endl;
std::cout << "Maximum values: " << std::endl;
std::cout << "int: " << INT_MAX << std::endl;
std::cout << "short: " << SHRT_MAX << std::endl;
std::cout << "long: " << LONG_MAX << std::endl;
std::cout << "long long: " << LLONG_MAX << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因为您在64位计算机上运行,其中编译器将"long"和"long long"实现为64位整数.
如果您要为32位计算机编译它,您会发现有所不同.例如:
$ g++ -m32 size.cpp
$ ./a.out
int size is 4 bytes.
short size is 2 bytes.
long size is 4 bytes.
long long size is 8 bytes.
Maximum values:
int: 2147483647
short: 32767
long: 2147483647
long long: 9223372036854775807
Run Code Online (Sandbox Code Playgroud)