(6)关于整型short、int、long和long long
书籍:《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相关推荐
- 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. ...
- c++基本数据类型基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:
基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:单精度型:float 双精度型:double 长 ...
- 16-C++-基础-整型short、int、long和long long
3.1.2 整型 整数就是没有小数部分的数字,如-2.98.-5286和0.整数有很多,如果将无限大的整数看作很大,则不可能用有限的计算机内存来表示所有的整数.因此,语言只能表示所有整数的一个子集.有 ...
- 【贪玩巴斯】带你学: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 ...
- mysql 短整型_C++ int,short,long(详解版)
C++ 有许多不同类型的数据.变量根据其数据类型进行分类,并确定可能存储在其中的信息种类.在这些数据类型中,整型变量只能保存整数. 计算机程序从现实世界收集数据,并以各种方式操作它们.有许多不同类型的 ...
- mysql的int多少溢出_mysql 整型(int)数字溢出在程序和数据库设计中的考虑
以下试以整型(int)抛砖引玉: 一:MySQL5 以MySQL5版本为例,大多数管理员可能把自增数字.或者其它应用数字字段的列属性设置为int类型,int占用4个字节,而int又分为无符号型和有符号 ...
- 数据类型_Number、String、LIst、Tuple、Set、Dictionary——Number:整型(int)、浮点型(float)、复数 (complex)
数据类型是一类值,每个值都只属于一种数据类型. Python3 中有六个标准的数据类型: Number(数字)包含:int.float.bool.complex(复数),bool 是 int 的子类. ...
- 整型(int)转时间格式字符串及页面long型转时间格式字符串
1,如果是封装的整型的话需要在后台进行处理再返回页面 处理过程是这样的 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm ...
- C语言 —— 整型(int)类型数据,做函数的参数,传值与传地址
整型数据的做函数参数注意事项: 如只是使用该数据,则把改值直接传递给函数,直接做函数的参数即可: 若需要在函数中对该数据进行更改,则需要把改值的地址当做函数的参数,进行传递. #include < ...
最新文章
- 探访日本滨松光子:“光”如何加速汽车行业进入智能汽车时代
- centos ipvsadm 规则保存_从VAR精神到判罚规则:终场哨声后的VAR点球,到底是否合理?...
- 【毕业求职季】-听说你想去大厂看学妹,带你看看阿里后端实习面经长啥样?
- SonarQube6.7规则的启用和禁用
- 随想录(windows上cuda环境安装)
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 权限管理
- NLP --- 隐马尔可夫HMM(极大释似然估计详解)
- U9二开之UBF配置和档案开发
- FFT蝶形算法的verilog实现专题——verilog具体实现的考虑
- Python利用结巴分词进行中文分词
- 毕业设计 嵌入式 智能温控风扇系统
- 嵌入式Linux红外遥控,嵌入式系统中的红外遥控附加功能,嵌入式系统,红外遥控,发射...
- 【wps word 页眉横线删除】
- Idea编译:Java找不到符号
- 信度spss怎么做_毕业季:毕业论文利用spss做信度分析步骤详解
- 在SQL Server 2000里设置和使用数据库复制
- tensorflow padded_batch的注意事项
- c语言程序中u8是什么意思,c – __u8和uint8_t之间的区别
- 香港中文大学推荐的书单~
- CSS3 3d旋转图片立方体案例演示
热门文章
- HDU2188——悼念512汶川大地震遇难同胞——选拔志愿者(Bash Game巴士博弈)(我去,名字肿么这么长)
- golang时间字符串转时间戳
- 实现DNS主从复制、子域、转发、智能DNS
- matlab曲线导入cad,MATLAB导入CAD数据.docx
- Ubuntu下tar命令使用详解 .tar解压、.tar压缩
- 【Arduino+ESP32专题】PlatformIO串口监视器的默认波特率修改
- MySQL最重要的日志-binlog详解
- python第三方库——xlrd和xlwt操作Excel文件学习
- python日本 老龄化分析_中国离老龄化社会还有多远?数据图表源代码一览
- 用c语言编写kcl方程,求助各位大手子 求了好多次都不对 用kvl kcl求出电容c