该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

int 数据类型所占字节数由编译器根据 C 标准的实现决定的

C99 标准只明确规定了 int 类型的数值表达范围,具体可以参考头文件 limite.h(/usr/include/limite.h) 以及 stdint.h(/usr/include/stdint.h)。它并没有明确规定 int 数据类型的字长。

这样规定的好处是令 C 语言具有更好的移植性,编译器在具体实现时只要令 int 的字长足够描述 C 标准规定的数值范围即可。试想如果规定死了 int 的字长,万一目标平台处理器无法支持那该如何是好呢?例如在以前的 PDP-7 (unix 诞生地)上,其字长是 18 位,和我们常见的以 8 为基数的字长(8,16,32,64)很不相同,如果以字长来规定的话,在其上实现 C 标准就颇为麻烦。

所以,int 字长到底是多少要看编译器如何实现。原则上在满足 C 标准的前提下,为了发挥目标平台的处理效率,编译器设计 int 的字长时会尽量令其与目标平台处理器的字长相同。

根据 C99 标准中的规定,int 类型的数字范围至少应该能表达 -32767 -- +32767(Annex E

(informative) Implementation limits)。

#define INT_MAX +32767

#define INT_MIN -32767

因此,int 类型的字长至少需 16 位(2字节)。

综上所述,根据 int 表达范围(至少 2 字节)和执行效率(int 字长 = 处理器字长)这两个条件,在常见的 Intel 体系上,我们就会见到 int 的字长有 16位(2字节),32位(4字节),64位(8字节)等几种。具体长度可以通过 sizeof(int) 求出来。

一般来说,在做计算时我们通常不太需要关心 int 的字长(除非涉及符号和溢出),但涉及到位操作,或者系统边界领域如存储到文件、实现网络协议时,数据类型的字长就很重要了。

如果需要进一步了解 C 标准的细节的话,推荐直接看 C99 标准文档,可以直接到网上去搜索。

linux 字节类型,int数据类型占几个字节?相关推荐

  1. linux中int类型,int数据类型占几个字节?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 int 数据类型所占字节数由编译器根据 C 标准的实现决定的 C99 标准只明确规定了 int 类型的数值表达范围,具体可以参考头文件 limite.h( ...

  2. int 几个字节 java_Java中char,short,int,long占几个字节和多少位

    1.字节:byte:用来计量存储容量的一种计量单位:位:bit 2.一个字节等于8位  1byte = 8bit char占用的是2个字节 16位,所以一个char类型的可以存储一个汉字. 整型: b ...

  3. int为什么占4个字节?一个字节为什么是8位?

    不知道大家有没有思考过这样的问题,一个字节为什么是8位呀,也许还有小伙伴不知道我说的这些是什么,没关系往下看. 第一个解释(历史)是IBM为System/360设计了一套8位EBCDIC编码,涵盖了数 ...

  4. 中文标点符号占用几个字节_英文字符占几个字节?汉字字符、还有标点呢?????...

    展开全部 一个英文字符等于1个字节,一个中文(含繁体)字符等于3个字节:中文标点占3个字节,英32313133353236313431303231363533e59b9ee7ad94313334313 ...

  5. Java中int为什么占四个字节?

    简单了解计算机为什么要采用二进制表示信息: 因为计算机作为一种电子计算机工具,是由大量的电子器件组成的,在这些电子器件中,电路的通断,电位的高低,用两个数字符号"1"和" ...

  6. Java中char,short,int,long占几个字节和多少位

    1.字节:byte:用来计量存储容量的一种计量单位:位:bit 2.一个字节等于8位  1byte = 8bit char占用的是2个字节 16位,所以一个char类型的可以存储一个汉字. 整型: b ...

  7. java 字符 几个字节_java中字符串占几个字节

    首先,char为Java的基本类型,基本类型所占的字节数是固定的,如int占4字节,double占8字节,这可以使得Java在不同的平台上所占类型固定,很好地保证了Java的可移植性.因此,Java中 ...

  8. java一个中文几个字节_java一个汉字占几个字节;一个字符占几个字节?redis一个汉字占几个字节;一个字符占几个字节?...

    脱离字符集编码 谈这个问题没什么实际意义 我不知道你讲的Java 中汉字是几个字节具体是什么意思 Java 中 Character 采用的是 utf-16 编码,那么就是两个字节(0----65535 ...

  9. char几个字节java_java中char占几个字节?

    java中char占几个字节? java中的一个char占用2个字节.java采用unicode,2个字节来表示一个字符. 一个数字或英文或汉字都是一个字符,只不过数字和英文时,存储的2个字节的第一个 ...

最新文章

  1. C++:多线程中的小白(3)线程传参详解
  2. 深度学习项目实战-关键点定位视频课程
  3. 箭头函数中的this的使用
  4. 4、MySQL创建数据库(CREATE DATABASE语句)
  5. 第12章:项目采购管理-章节真题
  6. java jpa hibernate_java - JPA和Hibernate - Criteria与JPQL或HQL
  7. PWA(Progressive Web App)入门系列:Fetch Request Headers Response Body
  8. dragloader.js帮助你在页面原生滚动下实现Pull Request操作
  9. python编程语言-Python成为2018年度编程语言,遥遥领先于其他语言
  10. C++视频分解和图片合成视频代码
  11. 新手小白学JAVA-显示系统中文件的后缀名
  12. pkl形式的数据集读取和可视化
  13. html文本如何逐渐淡入,CSS如何实现文字淡入效果
  14. 【STM8】两个单片机之间的Lora通讯实验
  15. Keras_examples
  16. CCF论文列表(2022拟定)大更新!MICCAI空降B类!PRCV空降C类!ICLR继续陪跑...
  17. (转)超全整理!Linux性能分析工具汇总合集
  18. 遇到一位满嘴骚话的 HR,真牛皮!
  19. php必须安装什么才能运行,运行php需要什么?
  20. Excel地图可视化不好用?试试这款工具

热门文章

  1. Firefox与Safari等浏览器打开新标签页会被拦截问题
  2. string类型空格判断
  3. win7下的众多BEX错误问题
  4. mysql创建数据库和创建数据表DDL语言,简单易懂,秒学会
  5. CorelDRAW中写意水墨画效果该如何制作
  6. GT928 TP驱动跟读及虚拟按键上报解析
  7. 【教程】只要姿势对,解释神经网络的数学过程跟玩似的
  8. 梅花雨做的一个日历 Javascript 页面脚本控件
  9. 如何用一句话激怒程序员?这11句话网友点赞上榜!
  10. 二、大数据与机器学习-机器学习基本概念-笔记