c ++数字类型的最大值
可能重复:
int大小,long等等
“长”保证至少有32位?
我想找出我的电脑的每种数据类型的最大值。 代码是:
int main() {
using namespace std;
cout << numeric_limits<int>::max() << endl;
cout << numeric_limits<long>::max() << endl;
cout << numeric_limits<long long>::max() << endl;
return 0;
}
打印:
2147483647
2147483647
9223372036854775807
问题1:为什么int
和long
是相同的?
问题2:以上输出来自64位的VS2010。 我的c ++程序是以64位运行的吗?
问题1:为什么int和long是相同的?
出于各种原因(便利性),由机器架构支持的整数大小往往是2的幂。 大多数现代处理器可以本地处理8,16,32和64位整数。 但是,有五种常用的整数类型: char
, short
, int
, long
和long long
。 所以他们中的两个必须具有相同的尺寸。
在大多数16位平台上, int
和short
都是16位。
在大多数32位平台上, int
和long
都是32位。
在大多数64位平台上, long
long long
都是64位。 有一个例外...
问题2:以上输出来自64位的VS2010。 我的c ++程序是以64位运行的吗?
无法从这些数据中分辨出来。 Windows是long
和int
对于32位和64位程序都具有相同大小的平台。
它们输出相同,因为在Visual Studio中, int
和long
都是带符号的32位整数。 无论您是在构建64位还是32位二进制文件(Windows 64位遵循LLP64模型),情况都是如此,
由于int
和long
的大小在Visual Studio上的32位和64位之间没有变化,因此无法从您提供的数据中知道您正在建立的是哪一个
给定类型的最大值依赖于编译器。 C ++标准没有规定任何关于长必须是特定数量的位等等。
然而,状态是什么呢?
1 = sizeof(char)<=sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)
如果你正在寻找使用特定大小的整数,我会建议包括“inttypes.h”,并使用int_8t,int16_t,int32_t,int64_t等...
链接地址: http://www.djcxy.com/p/40397.html