单片机/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)
char 1 字节 1 字节 1 字节
short 2 字节 2 字节 2 字节
int 4 字节 4 字节 4 字节
unsigned int 4 字节 4 字节 4 字节
long 4 字节 4 字节 8 字节
unsigned long 4 字节 4 字节 8 字节
long long 8 字节 8 字节 8 字节
float 4 字节 4 字节 4 字节
double 8 字节 8 字节 8 字节
指针 (void*) 4 字节 8 字节 8 字节

关键区别:

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

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

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

c 复制代码
#include <stdio.h>
int main() {
    printf("int: %zu\n", sizeof(int));
    printf("long: %zu\n", sizeof(long));
    printf("void*: %zu\n", sizeof(void*));
    return 0;
}

相关推荐
运维行者_2 分钟前
网络监控与ITSM集成:从告警到工单,实现运维自动化闭环
开发语言·网络·分布式·后端·架构·flask·php
小叮当爱咖啡26 分钟前
Day3.参数+Prompt三板斧
开发语言·python·prompt
菜冻鱼33 分钟前
Python-pandas-索引与筛选
开发语言·笔记·python·numpy·pandas·学习方法
我想走路带风1 小时前
各自缓冲及实现
c++
鹿角片ljp1 小时前
Java面试复盘(二):String不可变、字符串常量池与字符串拼接
开发语言·python
小秋求学记.2 小时前
PHP安全漏洞实战:从环境配置到RCE攻击
开发语言·php
阿米亚波2 小时前
【C/C++包管理器】vcpkg(by microsoft)
c语言·c++·git·vscode·microsoft·github·vcpkg
看浪的路人2 小时前
第3讲:代码补全引擎
开发语言·windows·python
SNAKEpc121382 小时前
OpenGL(十一)- 变换管线
c语言·c++·算法·矩阵·图形渲染
小小龙学IT3 小时前
Day 26-27 项目实战:从零构建一个高并发聊天室(epoll + 线程池)
linux·服务器·c语言·开发语言·网络