C++基本数据类型范围和区别(详细)
一、基本类型的大小及范围的总结(以下所讲都是默认在32位操作系统下):
字节:byte;位:bit。
1.短整型short:所占内存大小:2byte=16bit;所能表示范围:-32768~32767;(即-2^15~2^15-1)
unsigned short:所占内存大小:2byte=16bit;所能表示范围:0~65535;(即0~2^16-1)
2.整型int:所占内存大小:4byte=32bit;所能表示范围:-2147483648~2147483647;(即-2^31~2^31-1)
unsigned int: 所占内存大小:4byte=32bit;所能表示范围:0~4294967295;(即0~2^32-1)
3.长整型long:所占内存大小:4byte=32bit;所能表示范围:-2147483648~2147483647;(即-2^31~2^31-1)
unsigned long: 所占内存大小:4byte=32bit;所能表示范围:0~4294967295;(即0~2^32-1)
注:上面所说的全部是有符号型的,short,int,long都默认为有符号型,其中long和int都占4个字节的空间大小,他们有什么区别呢?
16位操作系统:long:4字节,int:2字节
32位操作系统:long:4字节,int:4字节
64位操作系统:long:8字节,int:4字节
int型在不同位数操作系统中所占用的字节数不同,如果想编写可移植性好的程序,早年流行16位和32位操作系统时最好用long修饰int型,现在流行32位和64位操作系统,用int就挺多了。当然这些都看你怎么去理解它了,毕竟它们在不同操作系统所占字节数不固定,所以各自都有其适用之处,不可定论其好坏。
下面是对它们的有科学依据的规定:
C语言规定:无论什么平台都要保证long型占用字节数不小于int型, int型不小于short型。
4.字符型char:所占内存大小:1byte=8bit;所能表示范围:不确定!!!!;
unsigned char:所占内存大小:1byte=8bit;所能表示范围:0~255;(0~2^8-1)
signed char: 所占内存大小:1byte=8bit;所能表示范围:-128~127;(-2^7~2^7-1)
char的默认类型不确定有可能是unsigned,也有可能是signed,主要更具编译器而定,可以自己测试一下编译器的默认char的符号类型。
5.布尔类型bool:所占内存大小:1byte=8bit;所能表示的范围:只能取两个值false或者true;所以最小值就是:0, 最大值:1.
6.单精度float: 所占内存大小:4byte=32bit;所能表示的范围:(1.17549e-038)~(3.40282e+038);
//注意:浮点数在内存中都是按科学计数法来存储的,浮点数的精度是由尾数的位数决定的,大家记住即可不必深究;
7.双精度double:所占内存大小:8byte=64bit;所能表示的范围:(2.22507e-308)~(1.79769e+308);
注:如何区分和使用这两个浮点类型呢,首先float和double的精度不同,float保留到小数点后面7位,而double保留到小数点后面16位,float能保证6位有效数字,而double能保证15位有效数字,如果在不追求精度的的情况下当然用 float比较好,节省内存,如果需要很高的精度的情况下,最好还是用double,平时我们定义浮点型变量一般都用double,毕竟精度高,一般精度的损失是不能忽略的。
这里主要是和浮点格式存储数据相关,单双精度的存储数据的浮点格式中的尾数和阶数表示长度不同,进而导致表示范围和精度不同。
8.字符串string:由于string在c++中属于类类型,不是基本数据类型,类不能计算其在内存中所占大小,非要用sizeof(string)来算的话,一般算出来的结果是 sizeof(string)=4byte, 如果string字符串内容很多,很明显就不是其真实大小,string类里面有计算其字节大小的函数如:size(),length()。
总结
我们在使用基础数据类型时原则是:就要保证精度、防止溢出、又要尽可能的少地占用内存。在计算机语言中,,数据类型的内涵除了包括数据的存储位数和存储格式之外,还隐含包括了该类型数据可进行那些运算,比如整型和实数都可以进行算数运算(加减乘除),可也进行关系运算(即比较大小),但是整型还可以进行位运算,而实数不行。
以上就是本文关于C和C++中的基本数据类型的大小及表示范围详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
————————————————
版权声明:本文为CSDN博主「卖火柴的小男孩2020」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014644594/article/details/103886264
C++基本数据类型范围和区别(详细)的更多相关文章
- MySQL与Oracle的语法区别详细对比
MySQL与Oracle的语法区别详细对比 Oracle和mysql的一些简单命令对比在本文中将会涉及到很多的实例,感兴趣的你不妨学习一下,就当巩固自己的知识了 Oracle和mysql的一些简单 ...
- C++中引用与指针的区别(详细介绍)
C++中引用与指针的区别(详细介绍) C++中的引用与指针的区别 指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一 ...
- bower 和 npm 的区别详细介绍
摘要: 本文讲的是bower 和 npm 的区别详细介绍, 简单的说,npm是进行后端开发中,使用的模块安装工具,而bower,是前端的模块安装工具. 比如,在安装express,socket.io时 ...
- C/C++动态分配与释放内存的区别详细解析
以下是对C与C++中动态分配与释放内存的区别进行了详细的分析介绍,需要的朋友可以过来参考下 1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配 ...
- JavaScript中instanceof与typeof运算符的用法及区别详细解析
JavaScript中的instanceof和typeof常被用来判断一个变量是什么类型的(实例),但它们的使用还是有区别的: typeof 运算符 返回一个用来表示表达式的数据类型的字符串. typ ...
- js onkeypress与onkeydown 事件区别详细说明
keypress只适用于有字符输入的按键 而keyup/keydown包含了Ctrl, Shift之类的情况 Firefox在处理onKeyDown/onKeyPress事件时存在漏洞,恶意网页可能利 ...
- char str[] 与 char *str的区别详细解析
char* get_str(void) { char str[] = {"abcd"}; return str; } char str[] = {"abcd"} ...
- MySQL与Oracle的语法区别详细对比 (转)
Oracle和mysql的一些简单命令对比 1) SQL> select to_char(sysdate,'yyyy-mm-dd') from dual; SQL> select to_c ...
- [转]MySQL与Oracle的语法区别详细对比
Oracle和mysql的一些简单命令对比 1) SQL> select to_char(sysdate,'yyyy-mm-dd') from dual; SQL> select to_c ...
随机推荐
- burp通过条件竞争上传文件
一·何为条件竞争 现代框架更能抵御此类攻击.他们通常不会将文件直接上传到文件系统上的预期目的地.相反,他们采取了预防措施,例如首先上传到临时的沙盒目录并随机命名以避免覆盖现有文件.然后,他们对这个临时 ...
- IT人的修炼之路
前言 计算机技术更新迭代的速度太快了,作为ITer每天除了面对工作,就要学习新技术,自己的感觉是一直在为技术疲于奔命,直到现在,也不敢放缓脚步.程序员每天必须抽出一定时间学习新技术,避免被淘汰. 1. ...
- 面试官给我挖坑:rm删除文件之后,空间就被释放了吗?
在Linux,你是不是曾经天真的以为,使用rm删除一个文件,占用的空间就释放了?事情可能不是常常如人意. 产生一个指定大小的随机内容文件 我们先看一下当前各个挂载目录的空间大小: $ df -h /d ...
- MyCat 使用中问题记录
MyCat问题记录: Unknown charsetIndex:255 异常消息: jvm 1 | 2022-04-27 14:09:13,337 [WARN ][$_NIOREACTOR-13-RW ...
- mysql外键,锁
mysql外键: 场景:用于建立两个表之间的联系,让A表中一个字段,可以在另一个表中字段值的范围去查找 注意事项: (1)被参照表和参照表字段属性必须一致 (2)参照表必须设置主键 (3)必须选择支持 ...
- Go基础3:函数、结构体、方法、接口
目录 1. 函数 1.1 函数返回值 同一种类型返回值 带变量名的返回值 函数中的参数传递 函数变量 1.2 匿名函数--没有函数名字的函数 在定义时调用匿名函数 将匿名函数赋值给变量 匿名函数用作回 ...
- 137_Power BI 自定义矩阵复刻Beyondsoft Calendar
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 前两天我们用PBI原生的视觉制作了自定义的热力图,今天我们来复刻一个Beyondsoft Calendar 1. ...
- OpenHarmony3.1 Release版本特性解析——硬件资源池化架构介绍
李刚 OpenHarmony 分布式硬件管理 SIG 成员 华为技术有限公司分布式硬件专家 OpenHarmony 作为面向全场景.全连接.全智能时代的分布式操作系统,通过将各类不同终端设备的能力进行 ...
- [2018-03-04] 利用 Settings Sync 插件同步 VS Code 设置
VS Code 已原生支持设置同步,本文仅备份记录 [2018-03-04] 早就听说这个插件了,今天用了一下,确实挺方便的.通过把配置文件创建为 Gist 上来实现了 VS Code 设置的同步,下 ...
- python函数学习的总结
python函数 part1 函数的作用: 函数以功能(完成一件事)为导向 随调随用减少代码重复性 增强代码可读性 函数的结构: def 函数名(): 函数体 函数的返回值 return:在函数中遇到 ...