C++数据类型有哪些 C++基本数据类型内存占用一览表【基础】
发布时间 - 2026-01-30 00:00:00 点击率:次C++中char、short、int、long、long long等类型大小不固定,仅规定最小位宽和相对大小关系,实际字节数依赖编译器和平台;char恒为1字节,其余类型需用定宽类型或sizeof/numeric_limits验证。
char、short、int、lon

C++ 标准只规定了这些类型的**最小位宽**和相对大小关系(比如 sizeof(long) >= sizeof(int)),不强制要求具体字节数。实际大小取决于编译器和目标平台。例如在 Windows x64 上用 MSVC,int 是 4 字节;但在某些嵌入式平台,int 可能是 2 字节。
常见误区是认为 int 一定是 4 字节——它只是「通常」是,但不可依赖。需要可移植代码时,优先用 中的定宽类型,比如 int32_t、uint8_t。
-
char固定为 1 字节(sizeof(char) == 1是 C++ 强制保证) -
short≥ 16 位,常见为 2 字节 -
int≥ 16 位,主流平台多为 4 字节 -
long≥ 32 位,Windows x64 是 4 字节,Linux x64 是 8 字节 -
long long≥ 64 位,几乎所有现代平台都是 8 字节
float、double、long double 的精度与内存占用差异大
IEEE 754 是事实标准,但 long double 尤其危险:MSVC 完全忽略它(和 double 等价),GCC 在 x86 上用 80 位扩展精度(10 字节存储,但 sizeof(long double) 常为 12 或 16),而 ARM64 通常直接映射为 64 位 double。
如果你写数值计算,别假设 long double 更精确——先查编译器文档,或直接用 std::numeric_limits 检查有效十进制位数。
立即学习“C++免费学习笔记(深入)”;
-
float:通常 4 字节,约 6–7 位十进制精度 -
double:通常 8 字节,约 15–16 位 -
long double:3 字节起跳,行为高度平台相关,sizeof不等于实际精度位宽
bool 和 void 不是“存储数据”的类型,但各有陷阱
bool 的 sizeof 不是 1 字节就安全——它只是“至少能存 true/false”,实际大小由 ABI 决定(常见为 1 字节,但某些调试模式或结构体对齐下可能被填充成 4 字节)。更关键的是:bool 只有两个合法值:true、false;用 memcpy 或位操作往 bool* 写非 0/1 值是未定义行为。
void 不能定义变量,但 void* 是万能指针类型;注意它不能算术运算(ptr + 1 非法),也不能解引用。C++17 起禁止 void 作为函数返回值以外的用途(如模板参数)。
- 不要用
sizeof(bool)推断内存布局,结构体中它的偏移受对齐规则支配 -
void*转其他指针必须显式static_cast,C 风格转换在 C++ 中不推荐 -
void函数参数列表()表示无参数,不是“任意参数”(那是...)
如何在代码里查清当前平台的真实大小
别靠记忆或教程表格,直接运行 sizeof 和 std::numeric_limits。尤其当跨平台开发或对接 C API(比如 OpenGL、Win32)时,结构体字段大小错一位,整个二进制协议就崩。
最简验证方式:
#include#include int main() { std::cout << "int: " << sizeof(int) << " bytes\n"; std::cout << "double: " << sizeof(double) << " bytes\n"; std::cout << "int max: " << std::numeric_limits ::max() << "\n"; }
记住:同一份源码,在 MSVC、Clang、GCC 下,甚至同一编译器不同架构目标(x86 vs aarch64)下,结果都可能不同。最保险的做法,是在构建脚本里加入 size check 断言,或者用 static_assert(sizeof(int) == 4, "int must be 4 bytes for our protocol")。
# linux
# git
# windows
# 字节
# ai
# c++
# ios
# win
# stream
# 内存占用
# 架构
# 数据类型
# Float
# for
# 结构体
# bool
# char
# int
# double
# void
# 指针
# 指针类型
# 位宽
# 的是
# 都是
# 是在
# 那是
# 但在
# 各有
# 几乎所有
# 但不
# 多为
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
BootStrap整体框架之基础布局组件
如何在IIS7中新建站点?详细步骤解析
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
网站制作企业,网站的banner和导航栏是指什么?
深入理解Android中的xmlns:tools属性
如何快速重置建站主机并恢复默认配置?
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Laravel模型事件有哪些_Laravel Model Event生命周期详解
如何在阿里云域名上完成建站全流程?
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
Laravel如何实现用户密码重置功能?(完整流程代码)
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
js代码实现下拉菜单【推荐】
如何解决hover在ie6中的兼容性问题
青岛网站建设如何选择本地服务器?
怎么用AI帮你设计一套个性化的手机App图标?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
如何用免费手机建站系统零基础打造专业网站?
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
香港服务器WordPress建站指南:SEO优化与高效部署策略
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
如何用美橙互联一键搭建多站合一网站?
如何安全更换建站之星模板并保留数据?
Python正则表达式进阶教程_复杂匹配与分组替换解析
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
EditPlus中的正则表达式 实战(4)
如何彻底卸载建站之星软件?
nodejs redis 发布订阅机制封装实现方法及实例代码
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
装修招标网站设计制作流程,装修招标流程?
如何构建满足综合性能需求的优质建站方案?
java中使用zxing批量生成二维码立牌
Laravel如何实现事件和监听器?(Event & Listener实战)
原生JS获取元素集合的子元素宽度实例
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
如何基于PHP生成高效IDC网络公司建站源码?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何在云主机上快速搭建网站?
python中快速进行多个字符替换的方法小结
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
如何在橙子建站中快速调整背景颜色?
Laravel如何创建自定义Artisan命令?(代码示例)

