C++的基本类型:

  1. char
  2. bool
  3. (unsigned) short (int)
  4. (unsigned) int
  5. (unsigned) long (int)
  6. (unsigned) long long (int)
  7. float
  8. double
  9. long double

其中unsigned表示的是该类型是否是有符号类型,不影响能表示的数的个数,其内存占用是一样的。

关于内存占用的具体问题,C++标准中规定short的字节数为2,long的字节数为4,并且 sizeof(short) <= sizeof(int) <= sizeof(long),可见不同系统上相同类型也可能有不同大小

本机(Win11, 64位)测试结果如下:

64位编译

添加-m32编译

由此发现以下规律:

  1. bool的字节数为1,但是1字节对应8位,其范围\([-128, 127]\),因此bool并非只能表示truefalse,相当于一个“超短整形”

  2. char的字节数为1,范围\([-128, 127]\),在内存中是一个整数,只是在输出时会对照ASCII码将其转为字符。

  3. short,long和long long类型一般是不变的,只有int的类型可能有变化。在一般的64位系统下,int占4字节,因此int和long (int)是等价的

  4. 在有符号类型里, int范围是\([-2^{32}, 2^{32})\),注意是左闭右开,因此某些时候处理\(-2^{32}\)时(比如手写读入)需要特判,其他整形也是如此

  5. 浮点数精度从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++ 基本类型的大小的更多相关文章

  1. 网页上传图片 判断类型 检测大小 剪切图片 ASP.NET版本

    本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=56&extra=page%3D1 我们在网页上传图片的时候,特 ...

  2. [改善Java代码] 谨慎包装类型的大小比较

    建议27:谨慎包装类型的大小比较 基本数据类型比较大小木有问题,不过其对应的包装类型大小比较就需要注意了.看如下代码: public class Client { public static void ...

  3. MVC文件上传 - 使用jquery异步上传并客户端验证类型和大小

    本篇体验MVC上传文件,从表单上传过渡到jquery异步上传. MVC最基本的上传文件是通过form表单提交方式 □ 前台视图部分 <% using(Html.BeginForm("F ...

  4. java 日期Date类型比较大小

      java 日期Date类型比较大小 CreateTime--2018年5月31日16点39分 Author:Marydon import java.text.DateFormat; import ...

  5. MVC文件上传01-使用jquery异步上传并客户端验证类型和大小

    本篇体验MVC上传文件,从表单上传过渡到jquery异步上传. MVC最基本的上传文件是通过form表单提交方式 □ 前台视图部分 <% using(Html.BeginForm("F ...

  6. CSS如何设置字体的类型、大小、颜色

    设计网页时,一般设置body的字体,让其他标签继承body的字体,这样设置特别方便,但是标题标签h1到h6和表单标签(input类型)是没有继承body的字体属性的,它们的字体需要单独设置. < ...

  7. 我给女朋友讲编程CSS系列(3) CSS如何设置字体的类型、大小、颜色,如何使用火狐浏览器的Firebug插件查看网页的字体

    一.CSS如何设置字体的类型.大小.颜色 设计网页时,一般设置body的字体,让其他标签继承body的字体,这样设置特别方便,但是标题标签h1到h6和表单标签(input类型)是没有继承body的字体 ...

  8. 分享一个Python脚本--统计redis key类型数据大小分布

    概述 今天主要介绍怎么统计redis key类型数据大小分布. 原理:使用redis命令: scan.pipline.type 和 debug object 来得到 redis key 信息. 脚本 ...

  9. golang中基本类型存储大小和转换

    Go语言的基本类型有: bool string int.int8.int16.int32.int64 uint.uint8.uint16.uint32.uint64.uintptr byte // u ...

  10. Web 在线文件管理器学习笔记与总结(2)显示文件列表(名称,类型,大小,可读,可写,可执行,创建时间,修改时间,访问时间)

    主要函数: filetype() 判断文件类型 filesize() 得到文件大小(字节) is_readable() 判断文件是否可读 is_writeable() 判断文件是否可写 is_exec ...

随机推荐

  1. 55 道MySQL基础题

    1.一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后, 删除了第 15, 16, 17 条记录,再把 Mysql 重启,再 insert 一条记 录,这条记录的 ID 是 18 ...

  2. python执行命令行调试工具pdb

    调试 pdb pdb是基于命令行的调试工具,非常类似gnu的gdb(调试c/c++). 命令 简写命令 作用 break b 设置断点(用法,b <数字>:在第数字行设置断点....... ...

  3. C#验证对象中的属性是否为空的共通方法

    在后台接口处理时,经常需要对请求的参数做验证.因此提取了共通方法,方便进行判断. /// <summary> /// 数据验证工具类 /// </summary> public ...

  4. 【LeetCode】648. Replace Words 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 set 字典 前缀树 日期 题目地址:https:/ ...

  5. LeetCode1237找出给定方程的正整数解

    题目 给定方程f和值z,找出给定方程f(x,y)=z的正整数解x,y.f(x,y)关于x.y都是严格单调的. 题目保证 f(x, y) == z 的解处于 1 <= x, y <= 100 ...

  6. vue.js是什么?它的优点有哪些?

    Vue.js 是一套响应式的 JavaScript 开发库.其他前端开发库也有很多,比如 jQuery.ExtJS.Angular 等. Vue.js 自问世以来所受关注度不断提高,在现在的市场上,V ...

  7. Spring企业级程序设计 • 【第2章 Spring Bean管理进阶】

    全部章节   >>>> 本章目录 2.1 bean标签和import标签 2.1.1 标签中的id属性和name属性 2.1.2 Bean的作用范围和生命周期 2.1.2 Be ...

  8. 【MySQL作业】分组查询 group by 子句——美和易思分组查询应用习题

    点击打开所使用到的数据库>>> 1.按照商品类型分组统计商品数量和平均单价,并按平均单价升序显示. -- 按照商品类型分组统计商品数量和平均单价,并按平均单价升序显示: select ...

  9. 使用 windows bat 脚本命令一键实现快速配置JDK 环境变量

    %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe"," ...

  10. Java高效开发-SSH+Wireshark+tcpdump组合拳

    目标 实现抓取远程服务器的数据包在wireshark中展示,不需要频繁使用tcpdump抓包后保存为cap数据包,在进行从服务器下载进行解析: 工具 1.ssh win10默认没有开启ssh服务端的, ...