当前位置: 首页 > article >正文

int类型的长度为什么不统一?int类型和硬件寄存器有多统一?数据类型长度是编译器决定的?

int类型的长度为什么不统一?

以C语言为例,它为了支持不同硬件平台,在计算机早期,硬件资源包括内存资源非常紧张,C语言标准不能直接规定int类型就是16位或者32位,这样会造成其它平台不能运行。故,标准做了取舍,不规定int类型的确切长度,但规定了与它相关的整型类型长度的大小关系,以此既支持不同平台,又避免不同平台带来类型长度出现long比int还小的混乱。但,不得不说,在不同平台、不同编译器下,C语言类型长度产生的问题一直存在。

  • Swift/Go/Rust都有通用整型和确定长度的整型两种,据情况选择。

  • 仓颉明确区分出Int32和Int64类型。

int类型和硬件寄存器有多统一?

Intel i386 32位设计的硬体,默认的数据寄存器、地址寄存器都是32位,即一次数据操作或者地址访问以32位为最优。C语言程序为了更好适应这种情况,大部分32位编译器都将int类型设计成4字节。这样,一个int就直接对应寄存器EAX或EBX的长度,资源使用上不会出现浪费。

了解更多:

数据类型长度是编译器决定的?

数据类型长度是编译器决定的?

没错。不要看硬件和OS是32位或者64位,数据类型并不是直接与它们相关,而是编译器决定的。大部分编译器都会提供类似type_size的函数,以返回不同数据类型的大小,这个大小和编译器自身有关。


若文章对您有帮助,欢迎关注。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。


http://www.kler.cn/a/373486.html

相关文章:

  • 在 .NET 8 Web API 中实现 Entity Framework 的 Code First 方法
  • 华为配置 之 STP
  • unordered_map、unordered_set 底层原理及其相关面试题
  • 网络搜索引擎Shodan(2)
  • 【JavaEE】【多线程】进阶知识
  • 二十二、MySQL 8.0 主从复制原理分析与实战
  • 微服务之间的横向关系与微服务与数据层之间的纵向关系
  • 牛客网 2024Java 最新面试宝典(附答案解析)正式开源
  • linux学习笔记 Ubuntu下的守护进程supervisor安装与多项目部署
  • MySQL查看某个数据库里面每张表的字符集和字符排序集
  • QT QDialog::exec()调用时清除部件所有焦点
  • django5入门【04】Django框架配置文件说明:settings.py
  • 计算机网络:网络层 —— IPv4 数据报的首部格式
  • 开源数据库 - mysql - 组织结构(与oracle的区别)
  • idea连接数据库出现错误的解决方式
  • D3.js 入门指南
  • Media | Android手机投屏方案Mircast、Scrcpy、DLNA实现方式对比
  • Proteus基本元件英文
  • 一文搞懂JDBC全流程(含MySQL安装和JDK下载)
  • Chromium HTML5 新的 Input 类型url对应c++
  • @DeleteMapping和@PostMapping和@GetMapping和Content-Type使用记录
  • C语言二叉树
  • 破解OCR生僻字难题,中安文字识别技术让文字录入更简单
  • Javascript——KMP算法
  • C#实现MD5加密
  • 有没有优质的公司可以提供高质量大模型数据?