unsigned int 定义的变量 在 电脑的 64 位系统中 和 32 位 cortex-m0 和 8 位的 51 单片机

各平台 unsigned int 的字节数对比

unsigned int 的字节长度不由unsigned int 定义的变量 在 电脑的 64 位系统中 和 32 位 cortex-m0 和 8 位的 51 单片机 分别是用多少个字节表示的编写代码的电脑位数决定,而是由目标运行平台的架构 + 对应编译器的标准约定决定,以下是三类平台主流编译器的默认实现:

表格

目标平台 架构位数 主流编译器 unsigned int 字节数 位数
64 位电脑(x86_64) 64 位 GCC / Clang / MSVC 4 字节 32 位
32 位 Cortex-M0 32 位 arm-none-eabi-gcc / Keil MDK / IAR 4 字节 32 位
8 位 51 单片机 8 位 Keil C51 / SDCC 2 字节 16 位

说明

  1. 64 位电脑系统 无论是 Windows(LLP64 模型)、Linux 还是 macOS(LP64 模型),主流编译器都保持 int 为 32 位(4 字节),64 位仅体现在指针、long 等类型上,这是行业通用惯例。

  2. 32 位 Cortex-M0 Cortex-M0 属于 ARM 32 位架构,遵循 ARM AAPCS 调用约定,标准 int 固定为 32 位(4 字节),同系列所有 Cortex-M3/M4/M7 均遵循此规则。

  3. 8 位 51 单片机 51 是 8 位内核,为了兼顾运行效率与数据范围,Keil C51 等编译器将 int 定义为 16 位(2 字节);如果需要 32 位无符号整型,需使用 unsigned long(占 4 字节)。

  4. C 标准背景 C 语言标准仅规定 int 的最小取值范围不小于 16 位(即至少 2 字节),具体字节数由编译器和目标架构共同定义,上述为各领域的工业界默认标准。

相关推荐
ヾChen16 分钟前
ESP32 OTA 踩坑实录
stm32·单片机·嵌入式硬件·物联网·学习
DevHub41 分钟前
probe-rs 教程:一行命令替代 OpenOCD 烧写调试 Cortex-M
arm开发·嵌入式硬件·mcu·rust
小僧景贤1 小时前
嵌入式ADC高阶深度解析:基于STM32底层原理、误差溯源、硬件调校与工业级落地
单片机·嵌入式硬件·stm32 adc·工业级高精度采集·adc 误差校准·量产固件开发
黑猫学长呀1 小时前
【驱动开发常见问题】编译出现rm: cannot remove `asm/arch‘: Is a directory
驱动开发·单片机·嵌入式硬件·bug·编译报错·kernrl
雨田言炎2 小时前
STM32专题之内部FLASH详解
笔记·stm32·单片机
Be for thing4 小时前
【嵌入式成长10】STC89C51蜂鸣器|有源/无源蜂鸣器区分、三极管驱动、定时器播放音乐实战
单片机·嵌入式硬件·学习
郎哥编程课堂4 小时前
单片机零基础训练营第2天:嵌入式开发常用的三种进制
单片机·嵌入式硬件
LCG元4 小时前
STM32 DAC+DMA+定时器触发生成任意波形:数据对齐陷阱、输出缓冲器选型与频率精度实测
stm32·单片机·嵌入式硬件
etc95275 小时前
IAR下如何同时指定section的LMA和VMA
arm开发·嵌入式硬件·mcu
LuminousCPP5 小时前
嵌入式-51单片机入门(三)-数码管驱动:从单管点亮、多位扫描到动态刷新与消隐原理
笔记·单片机·嵌入式硬件·51单片机