书籍:《C++ Primer Plus 第6版》第三章:
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位。

// limits.cpp -- some integer limits
#include <iostream>
#include <climits>              // use limits.h for older systems
int main()
{using namespace std;int n_int = INT_MAX;        // 给n_int赋值为int类型的最大值short n_short = SHRT_MAX;   // 给n_short赋值为short类型的最大值long n_long = LONG_MAX;  //给n_long赋值为long类型的最大值long long n_llong = LLONG_MAX;//给n_llong赋值为long long类型的最大值/*以上INT_MAX、SHRT_MAX、LONG_MAX、LLONG_MAX是在头文件climits中定义的符号常量。分别代表int的最大值,short的最大值,long的最大值,long long的最大值。本文附表中,全对climits文件中定义的符号常量进行总结*/// 下面显示内存的字节数cout << "int is " << sizeof (int) << " bytes." << endl;//sizeof运算符,对类型名使用时,应加括号cout << "short is " << sizeof n_short << " bytes." << endl;//sizeof运算符,对变量名使用时,可以省略括号cout << "long is " << sizeof n_long << " bytes." << endl;cout << "long long is " << sizeof n_llong << " bytes." << endl;cout << endl;cout << "Maximum values:" << endl;cout << "int: " << n_int << endl;cout << "short: " << n_short << endl;cout << "long: " << n_long << endl;cout << "long long: " << n_llong << endl << endl;cout << "Minimum int value = " << INT_MIN << endl;cout << "Bits per byte = " << CHAR_BIT << endl;// cin.get();return 0;
}

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

附表:climits 中的符号常量

符号常量 表示
CHAR_BIT char的位数
CHAR_MAX char的最大值
CHAR_MIN char的最小值
SCHAR_MAX signed char的最大值
SCHAR_MIN signed char的最小值
UCHAR_MAX unsigned char的最大值
SHRT_MAX short的最大值
SHRT_MIN short的最小值
USHRT_MAX unsigned short的最大值
INT_MAX int的最大值
INT_MIN int的最小值
UINT_MAX unsigned int的最大值
LONG_MAX long的最大值
LONG_MIN long的最小值
ULONG_MAX unsigned long的最大值
LLONG_MAX long long的最大值
LLONG_MIN long long的最小值
ULLONG_MAX unsigned long long的最大值

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

(6)关于整型short、int、long和long long相关推荐

  1. C语言学习6:数据类型 -> 基本类型 -> 整型类型(int、short int、long int、char等)

    目录 1.数据类型的分类 2.基本整型 int 3.短整型 short int 4.长整型 long int 5.双长整型 long long int 6.字符型 char 7.布尔型 bool 1. ...

  2. c++基本数据类型基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:

    基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:单精度型:float 双精度型:double 长 ...

  3. 16-C++-基础-整型short、int、long和long long

    3.1.2 整型 整数就是没有小数部分的数字,如-2.98.-5286和0.整数有很多,如果将无限大的整数看作很大,则不可能用有限的计算机内存来表示所有的整数.因此,语言只能表示所有整数的一个子集.有 ...

  4. 【贪玩巴斯】带你学:C++ tips ——知识点: C++整型short,int,long和long long的区别 2021年12月20日

    [贪玩巴斯]带你学:C++ tips --知识点: C++整型short,int,long和long long的区别 2021年12月20日 C++的整型有short,int,long和long lo ...

  5. mysql 短整型_C++ int,short,long(详解版)

    C++ 有许多不同类型的数据.变量根据其数据类型进行分类,并确定可能存储在其中的信息种类.在这些数据类型中,整型变量只能保存整数. 计算机程序从现实世界收集数据,并以各种方式操作它们.有许多不同类型的 ...

  6. mysql的int多少溢出_mysql 整型(int)数字溢出在程序和数据库设计中的考虑

    以下试以整型(int)抛砖引玉: 一:MySQL5 以MySQL5版本为例,大多数管理员可能把自增数字.或者其它应用数字字段的列属性设置为int类型,int占用4个字节,而int又分为无符号型和有符号 ...

  7. 数据类型_Number、String、LIst、Tuple、Set、Dictionary——Number:整型(int)、浮点型(float)、复数 (complex)

    数据类型是一类值,每个值都只属于一种数据类型. Python3 中有六个标准的数据类型: Number(数字)包含:int.float.bool.complex(复数),bool 是 int 的子类. ...

  8. 整型(int)转时间格式字符串及页面long型转时间格式字符串

    1,如果是封装的整型的话需要在后台进行处理再返回页面 处理过程是这样的 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm ...

  9. C语言 —— 整型(int)类型数据,做函数的参数,传值与传地址

    整型数据的做函数参数注意事项: 如只是使用该数据,则把改值直接传递给函数,直接做函数的参数即可: 若需要在函数中对该数据进行更改,则需要把改值的地址当做函数的参数,进行传递. #include < ...

最新文章

  1. 探访日本滨松光子:“光”如何加速汽车行业进入智能汽车时代
  2. centos ipvsadm 规则保存_从VAR精神到判罚规则:终场哨声后的VAR点球,到底是否合理?...
  3. 【毕业求职季】-听说你想去大厂看学妹,带你看看阿里后端实习面经长啥样?
  4. SonarQube6.7规则的启用和禁用
  5. 随想录(windows上cuda环境安装)
  6. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 权限管理
  7. NLP --- 隐马尔可夫HMM(极大释似然估计详解)
  8. U9二开之UBF配置和档案开发
  9. FFT蝶形算法的verilog实现专题——verilog具体实现的考虑
  10. Python利用结巴分词进行中文分词
  11. 毕业设计 嵌入式 智能温控风扇系统
  12. 嵌入式Linux红外遥控,嵌入式系统中的红外遥控附加功能,嵌入式系统,红外遥控,发射...
  13. 【wps word 页眉横线删除】
  14. Idea编译:Java找不到符号
  15. 信度spss怎么做_毕业季:毕业论文利用spss做信度分析步骤详解
  16. 在SQL Server 2000里设置和使用数据库复制
  17. tensorflow padded_batch的注意事项
  18. c语言程序中u8是什么意思,c – __u8和uint8_t之间的区别
  19. 香港中文大学推荐的书单~
  20. CSS3 3d旋转图片立方体案例演示

热门文章

  1. HDU2188——悼念512汶川大地震遇难同胞——选拔志愿者(Bash Game巴士博弈)(我去,名字肿么这么长)
  2. golang时间字符串转时间戳
  3. 实现DNS主从复制、子域、转发、智能DNS
  4. matlab曲线导入cad,MATLAB导入CAD数据.docx
  5. Ubuntu下tar命令使用详解 .tar解压、.tar压缩
  6. 【Arduino+ESP32专题】PlatformIO串口监视器的默认波特率修改
  7. MySQL最重要的日志-binlog详解
  8. python第三方库——xlrd和xlwt操作Excel文件学习
  9. python日本 老龄化分析_中国离老龄化社会还有多远?数据图表源代码一览
  10. 用c语言编写kcl方程,求助各位大手子 求了好多次都不对 用kvl kcl求出电容c