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 ...
随机推荐
- FlashFXP链接到服务器上,如果www目录下的文件隐藏
FlashFXP链接到服务器上,如果www目录下的文件隐藏,那么请按照如下设置,就可以显示隐藏的文件了 [站点]->[站点管理器]->选项,然后按照如下设置:
- SpringBoot整合Netty实现socket通讯简单demo
依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifa ...
- LocalDate转换成Date
LocalDate nowLocalDate = LocalDate.now(); Date date = Date.from(nowLocalDate.atStartOfDay(ZoneOffset ...
- c++之面试(5)
问题描述 为什么用自增作为主键? 解释 做为主键时,uuid和自增相比较,自增更适合.原因: 1 uuid是无序的, 插入数据时,页的位置会发生变化,页分裂,速度慢. 2 uuid占的空间大,并且in ...
- 【LeetCode】 Binary Tree Zigzag Level Order Traversal 解题报告
Binary Tree Zigzag Level Order Traversal [LeetCode] https://leetcode.com/problems/binary-tree-zigzag ...
- 【LeetCode】81. Search in Rotated Sorted Array II 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/search-in ...
- 【LeetCode】594. Longest Harmonious Subsequence 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 统计次数 日期 题目地址:https://leetc ...
- A Tutorial on Energy-Based Learning
目录 概 主要内容 损失函数 Energy Loss Generalized Perceptron Loss Generalized Margin Loss Hinge Loss Log Loss L ...
- A Primer on Domain Adaptation Theory and Applications
目录 概 主要内容 符号说明 Prior shift Covariate shift KMM Concept shift Subspace mapping Wasserstein distance 应 ...
- opencv学习(六)——图像基本操作
图像基本操作 一.访问和修改像素值 先来理解一下,图像与一般的矩阵或张量有何不同(不考虑图像的格式,元数据等信息).首先,一张图像有自己的属性,宽,高,通道数.其中宽和高是我们肉眼可见的属性,而通道数 ...