C++ 基本类型的大小
C++的基本类型:
- char
- bool
- (unsigned) short (int)
- (unsigned) int
- (unsigned) long (int)
- (unsigned) long long (int)
- float
- double
- long double
其中unsigned表示的是该类型是否是有符号类型,不影响能表示的数的个数,其内存占用是一样的。
关于内存占用的具体问题,C++标准中规定short的字节数为2,long的字节数为4,并且 sizeof(short) <= sizeof(int) <= sizeof(long),可见不同系统上相同类型也可能有不同大小
本机(Win11, 64位)测试结果如下:
64位编译

添加-m32编译

由此发现以下规律:
bool的字节数为1,但是1字节对应8位,其范围\([-128, 127]\),因此bool并非只能表示
true与false,相当于一个“超短整形”char的字节数为1,范围\([-128, 127]\),在内存中是一个整数,只是在输出时会对照ASCII码将其转为字符。
short,long和long long类型一般是不变的,只有int的类型可能有变化。在一般的64位系统下,int占4字节,因此int和long (int)是等价的
在有符号类型里, int范围是\([-2^{32}, 2^{32})\),注意是左闭右开,因此某些时候处理\(-2^{32}\)时(比如手写读入)需要特判,其他整形也是如此
浮点数精度从float,double,long double递增,其范围越来越大。long double在不同位宽下长度不同
指针
指针内储存的是一个地址,因此所有类型的指针大小相同,64位下指针占8字节,相当于long long,而32位下指针占4字节,相当于long
那么如何快速计算一个大数组占用的内存呢?一个方法是记忆64位下\(10^6\)大小的int数组约为4MB(\(4*1024*1024/10^6\)),由此可以很方便的推出\(5*10^6\)的int数组为20MB,\(2*10^6\)的long long数组为16MB等等。
C++ 基本类型的大小的更多相关文章
- 网页上传图片 判断类型 检测大小 剪切图片 ASP.NET版本
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=56&extra=page%3D1 我们在网页上传图片的时候,特 ...
- [改善Java代码] 谨慎包装类型的大小比较
建议27:谨慎包装类型的大小比较 基本数据类型比较大小木有问题,不过其对应的包装类型大小比较就需要注意了.看如下代码: public class Client { public static void ...
- MVC文件上传 - 使用jquery异步上传并客户端验证类型和大小
本篇体验MVC上传文件,从表单上传过渡到jquery异步上传. MVC最基本的上传文件是通过form表单提交方式 □ 前台视图部分 <% using(Html.BeginForm("F ...
- java 日期Date类型比较大小
java 日期Date类型比较大小 CreateTime--2018年5月31日16点39分 Author:Marydon import java.text.DateFormat; import ...
- MVC文件上传01-使用jquery异步上传并客户端验证类型和大小
本篇体验MVC上传文件,从表单上传过渡到jquery异步上传. MVC最基本的上传文件是通过form表单提交方式 □ 前台视图部分 <% using(Html.BeginForm("F ...
- CSS如何设置字体的类型、大小、颜色
设计网页时,一般设置body的字体,让其他标签继承body的字体,这样设置特别方便,但是标题标签h1到h6和表单标签(input类型)是没有继承body的字体属性的,它们的字体需要单独设置. < ...
- 我给女朋友讲编程CSS系列(3) CSS如何设置字体的类型、大小、颜色,如何使用火狐浏览器的Firebug插件查看网页的字体
一.CSS如何设置字体的类型.大小.颜色 设计网页时,一般设置body的字体,让其他标签继承body的字体,这样设置特别方便,但是标题标签h1到h6和表单标签(input类型)是没有继承body的字体 ...
- 分享一个Python脚本--统计redis key类型数据大小分布
概述 今天主要介绍怎么统计redis key类型数据大小分布. 原理:使用redis命令: scan.pipline.type 和 debug object 来得到 redis key 信息. 脚本 ...
- golang中基本类型存储大小和转换
Go语言的基本类型有: bool string int.int8.int16.int32.int64 uint.uint8.uint16.uint32.uint64.uintptr byte // u ...
- Web 在线文件管理器学习笔记与总结(2)显示文件列表(名称,类型,大小,可读,可写,可执行,创建时间,修改时间,访问时间)
主要函数: filetype() 判断文件类型 filesize() 得到文件大小(字节) is_readable() 判断文件是否可读 is_writeable() 判断文件是否可写 is_exec ...
随机推荐
- 55 道MySQL基础题
1.一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后, 删除了第 15, 16, 17 条记录,再把 Mysql 重启,再 insert 一条记 录,这条记录的 ID 是 18 ...
- python执行命令行调试工具pdb
调试 pdb pdb是基于命令行的调试工具,非常类似gnu的gdb(调试c/c++). 命令 简写命令 作用 break b 设置断点(用法,b <数字>:在第数字行设置断点....... ...
- C#验证对象中的属性是否为空的共通方法
在后台接口处理时,经常需要对请求的参数做验证.因此提取了共通方法,方便进行判断. /// <summary> /// 数据验证工具类 /// </summary> public ...
- 【LeetCode】648. Replace Words 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 set 字典 前缀树 日期 题目地址:https:/ ...
- LeetCode1237找出给定方程的正整数解
题目 给定方程f和值z,找出给定方程f(x,y)=z的正整数解x,y.f(x,y)关于x.y都是严格单调的. 题目保证 f(x, y) == z 的解处于 1 <= x, y <= 100 ...
- vue.js是什么?它的优点有哪些?
Vue.js 是一套响应式的 JavaScript 开发库.其他前端开发库也有很多,比如 jQuery.ExtJS.Angular 等. Vue.js 自问世以来所受关注度不断提高,在现在的市场上,V ...
- Spring企业级程序设计 • 【第2章 Spring Bean管理进阶】
全部章节 >>>> 本章目录 2.1 bean标签和import标签 2.1.1 标签中的id属性和name属性 2.1.2 Bean的作用范围和生命周期 2.1.2 Be ...
- 【MySQL作业】分组查询 group by 子句——美和易思分组查询应用习题
点击打开所使用到的数据库>>> 1.按照商品类型分组统计商品数量和平均单价,并按平均单价升序显示. -- 按照商品类型分组统计商品数量和平均单价,并按平均单价升序显示: select ...
- 使用 windows bat 脚本命令一键实现快速配置JDK 环境变量
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe"," ...
- Java高效开发-SSH+Wireshark+tcpdump组合拳
目标 实现抓取远程服务器的数据包在wireshark中展示,不需要频繁使用tcpdump抓包后保存为cap数据包,在进行从服务器下载进行解析: 工具 1.ssh win10默认没有开启ssh服务端的, ...