C++ 测量整型(int, short, long 和 long long ) 的长度

C++对整型short、int、long和long long的长度规则定义如下: 
- short 至少16位; 
- int 至少和short一样长; 
- long 至少32位,且至少和int一样长; 
- long long 至少64位,且至少和long一样长。 


可能这个地方比较难以理解,为什么C++的规则那么奇怪,什么叫至少呢?
因为C++是一门跨平台的语言,对于不同的系统来说,整型short、int、long和long long的长度是不一样的,这个至少给人理解上的这个类型的长度可变,是针对不同系统来说是可变的,针对一个系统,长度是固定的,假如short有16位,那么int最少也要有16位。
 

下面是通过 C++命令 测量整形的长度

注:sizeof 运算符,可以算出int为4bytes,1bytes=8bit,int就是32位。

#include <iostream>
#include <climits>  //定义了符号常量

int main()
{
	using namespace std;
	int  n_int = INT_MAX;
	short n_short = SHRT_MAX;
	long n_long = LONG_MAX;
	long long n_llong = LLONG_MAX;

	// sizeof operator yields size of type or of variable
	cout << " sizeof operator yields size of type or of variable. " << endl;
	cout << " int is " << sizeof(int) << " bytes. " << endl;
	cout << " short is " << sizeof n_short << " bytes." << endl;
	cout << " long is " << sizeof n_long << " bytes." << endl;
	cout << " n_llong is " << sizeof n_llong << " bytes." << endl;
	cout << endl;

	// Maximum values
	cout << "Maximum values: " << endl;
	cout << "int Maximum values: " << n_int << endl;
	cout << "short Maximum values: " << n_short << endl;
	cout << "long Maximum values: " << n_long << endl;
	cout << "long long Maximum values: " << n_llong << endl;
	cout << endl;

	// Minimum values
	cout << "Minimum values: " << endl;
	cout << "int Minimum values: " << INT_MIN << endl;
	cout << "short Minimum values: " << SHRT_MIN << endl;
	cout << "long Minimum values: " << LONG_MIN << endl;
	cout << "long long Minimum values: " << LLONG_MIN << endl;

	cout << endl;
	cin.get();
	cin.get();
	return 0;

}

运行结果:

关于整型的选择: 
1. int为计算机处理效率最高的长度。如果没有非常说服力的理由来选择其他类型,则应使用int。 
2. 如果变量的值不可能为负数,则可以使用无符号类型。 
3. 如果知道变量可能表示的整数值大于16位,则应使用long,即使系统上的int类型为32位,也应该这样做,这样程序在移值到16位的系统上时,就不会突然无法正常工作。 
4. 如果要存储的值超过20亿,可以使用long long。 
5. 如果short比int小,则可以使用short来节省内存,通常,仅当有大型整型数组时,才有必要使用short。如果节省内存很重要,则应使用short而不是使用int,即使它们的长度是一样的。

 

参考资料

[1] C++ Primer Plus 第6版  —— 第3章

[2] https://blog.csdn.net/u014190698/article/details/80458701

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechArtisan6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值