ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

单片机/C语言八股:(五)32/64 位系统中,C/C++各变量类型所占字节数

2026/8/18 20:28:59 拓冰建站 浏览量
单片机/C语言八股:(五)32/64 位系统中,C/C++各变量类型所占字节数
上一篇下一篇
volatile 和 static 关键字

在 32 位和 64 位系统中,C 语言中各基本数据类型的大小并不完全由“32/64 位”决定,而是由编译器 + 操作系统 + ABI(应用二进制接口)共同决定。C++ 中基本数据类型的大小规则与 C 语言在相同平台和编译器下完全一致。其他编程语言(如 Java、Python)则通常有固定或抽象化的类型大小

1)总结表格

常见模型(以主流平台为例):

类型32 位系统(如 x86 Windows/Linux)64 位系统(LLP64 模型,Windows)64 位系统(LP64 模型,Linux/macOS)
char1 字节1 字节1 字节
short2 字节2 字节2 字节
int4 字节4 字节4 字节
unsigned int4 字节4 字节4 字节
long4 字节4 字节8 字节
unsigned long4 字节4 字节8 字节
long long8 字节8 字节8 字节
float4 字节4 字节4 字节
double8 字节8 字节8 字节
指针 (void*)4 字节8 字节8 字节

关键区别:

  • Linux/macOS 64 位使用LP64 模型long和指针是 8 字节。

  • Windows 64 位使用LLP64 模型:只有long long和指针是 8 字节,long仍是 4 字节!

2)如何在 C 中查看实际大小?

#include<stdio.h>intmain(){printf("int: %zu\n",sizeof(int));printf("long: %zu\n",sizeof(long));printf("void*: %zu\n",sizeof(void*));return0;}