爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      C语言中的整型数据类型(你真的了解吗)

      首页 知识中心 软件开发 文章详情页

      C语言中的整型数据类型(你真的了解吗)

      2023-08-02 07:07:45 阅读次数:420

      c语言,数据类型

      1. 整型数据类型

      C语言里面的整数数据类型

      类型名称

      C语言中的关键字

      注释

      字符型

      char

      表示一个很小的整数

      短整型

      short

      表示一个不怎么大的整数

      整型

      int

      生活中一般的整数都可以表示

      长整型

      long

      较大的整数

      加长整型

      long long

      非常大的整数

      一个整数而已,为什么会需要定义这么多不同的类型出来呢?

      计算机通过晶体管的开关状态来记录数据。它们通常8个编为一组,我们称之为字节。而晶体管有开关两种状态,一个字节有8个晶体管,因此一个字节可以拥有2的八次方个不同的状态。让每一种状态对应一个数值,这样一个字节可以表示256个不同数值。

      晶体管状态

      二进制数值

      十进制数值

      关关关关关关关关

      00000000

      0

      关关关关关关关开

      00000001

      1

      关关关关关关开关

      00000010

      2

      关关关关关关开开

      00000011

      3

      …

      …

      …

      开关开关开关开关

      10101010

      170

      开开开开开开开开

      11111111

      255

      要表示更大的数据范围就需要更多晶体管。要知道在发明C语言的年代,计算机存储资源是非常珍贵而稀缺的。如果只想表达0到100以内的数值,那么一个字节就足够了,何必用两个字节来存储?

      而如今,即使存储资源已经较为丰富了,但是大部分的强类型语言,都延续了这个传统。它们均提供了丰富的类型以供选用。而程序员在编写代码时,通常能预想到需要使用到的数据范围的大小。这样在处理一个数据时,可以从语言所提供的类型中选用最合适的类型来承载数据。

      在C语言标准并未规定这些数据类型的大小范围,具体的实现交由了编译器和平台决定。

      2. 用sizeof关键词来测量大小

      和​​int​​​一样,​​sizeof​​​是C语言中的一个关键词。它是英文​​size of​​连起来的合成词。翻译成中文就是什么东西的大小的意思。它能够测量C语言各种实体所占用的字节大小。

      如果我们想看​​int​​​所占用的字节大小,可以这样写​​sizeof(int)​​​。执行后这段代码后,它的测量结果是一个整型。我们可以借助​​printf​​​函数将测量结果显示在控制台上。我们现在可以假设​​sizeof​​​返回的结果是​​int​​​类型的,在​​printf​​​函数中使用占位符​​%d​​​。而更准确的用法,应该用​​%zu​​。

      测量​​int​​类型所占用的字节大小,并将结果打印在控制台上的代码如下:

      printf("%d\n", sizeof(int));

      ​​sizeof​​后面既可以跟 类型,也可以跟 变量、常量。

      1. 跟类型,测类型所占用字节的大小。
      2. 跟变量,测变量的类型所占用字节大小。
      3. 跟常量,测常量的类型所占用字节大小。

      三种情况的示例代码。

      int a; printf("sizeof int = %d\n", sizeof(int)); // 1.测类型所占用字节的大小 printf("sizeof a = %d\n", sizeof(a)); // 1.测变量的类型所占用字节大小 printf("sizeof 123 = %d\n", sizeof(123)); // 1.测常量的类型所占用字节大小

      测试C语言提供的各种整型类型的大小

      printf("sizeof char=%d\n", sizeof(char)); printf("sizeof short=%d\n", sizeof(short)); printf("sizeof int=%d\n", sizeof(int)); printf("sizeof long=%d\n", sizeof(long)); printf("sizeof long long=%d\n", sizeof(long long));

      C语言中的整型数据类型(你真的了解吗)

      结果:char,short,int,long,long long分别占用了1,2,4,4,8个字节。至此,我们已经得知了它们所占字节大小,并且验证了可以表示越大范围的数据类型所占用的字节越多。

      值得注意的是​

      ​​int​​

      ​和​

      ​​long​​

      ​均占用4个字节。这并未违反C语言标准,C语言标准规定高级别的类型取值范围不得小于低级别的类型,但是它们可以是一致的。

      3. 三位二进制表示的数值范围

      ​​char​​​,​​short​​​,​​int​​​,​​long​​​,​​long long​​​分别占用了1,2,4,4,8个字节。而每个字节由8个晶体管组成,每个晶体管状态我们称之为位。那么​​char​​​,​​short​​​,​​int​​​,​​long​​​,​​long long​​分别占用了8,16,32,32,64位。

      太多的位不利于理解原理,暂时把问题简化一下,试试看位数减少到3。然后,分析3位的组
      合,它能表示多大范围的数值.

      晶体管状态

      二进制数据

      十进制数据

      关关关

      000

      0

      关关开

      001

      1

      关开关

      010

      2

      关开开

      011

      3

      开关关

      100

      4

      开关开

      101

      5

      开开关

      110

      6

      开开开

      111

      7

      三位二进制组成的数据类型,可以表达2的3次方也就是8个数值。如果从0开始,那么可以表达从0到7的
      数据范围。得出结论:如果不考虑负数,那么整型数据类型可以表达的数据范围是 假设,位数为n,则数据范围从【0】开始,到【2的n次方-1】的数值范围。

      那​​负数​​怎么办?我们需要拿出一个位来作为符号位。用来表示这个数据是正数还是负数。在IEEE标准中,这个符号位存在于二进制的最高位。用三位二进制来示范这种情况。

      晶体管状态

      二进制数据

      十进制数据

      关关关

      000

      0

      关关开

      001

      1

      关开关

      010

      2

      关开开

      011

      3

      开关关

      100

      -4

      开关开

      101

      -3

      开开关

      110

      -2

      开开开

      111

      -1

      加上符号之后,现在取值范围变为负4到3了。红色字体的为最高位,最高位为1的表示负数。你可能会觉得有点奇怪,为什么3的二进制是​​011​​​,而负3却是​​101​​呢?如果简单的加一个符号位,为什么不用111呢?那我们看看如图中所示的3与负3相加的运算结果。

      C语言中的整型数据类型(你真的了解吗)

      会惊奇地发现,用101来表示负3与用011表示的正3相加。结果为1000,但是由于仅有3位二进制来保
      存数据,最高位1被丢弃了。结果为000,居然得到了正确的结果0。

      4.数值的补码表示法

      C语言中的整型数据类型(你真的了解吗)

      时钟是一个圆被分成了12个点,让我们假设这个时钟一步只能走一个整点。那么这个时钟只有12种不同的模式,我们把12称之为时钟的模。

      现在指针指向了5点,我们要让指针回到0点。一个办法是直接回退5个小时(5-5)。
      另一个办法是继续往前走7个小时(5+7)。

      在第二种办法中,5+7=12,而12刚好为时钟的模,时钟指向12的同时,也正好指向了0。
      要让指针回到0点,只需要让它加上模与当前的时间的差即可。

      因此,指针回退5小时与指针前进7小时是等价的。我们可以用指针前进来代替指针后退。

      将这种思想带入到上面讨论的三位二进制当中。三位二进制能表示8中不同的模式,因此它的 模 为8。要让3回到0,我们可以让3减去3,也可以让3加上 模与3的差,即8-3=5。因此,我们可以把-3在三位二进制中用5的二进制101表示。

      这种将用加法来等效减法的二进制表示法被称之为补码表示法。

      正数的补码就是其二进制本身。
      而正数对应的负数的补码为:(模 - 正数)的二进制。

       

      000

      0

      001

      1

      010

      2

      负数

      模减去正数

      补码

      011

      3

      -4

      8-4=4

      100

      100

      -4

      -3

      8-3=5

      101

      101

      -3

      -2

      8-2=6

      110

      110

      -2

      -1

      8-1=7

      111

      111

      -1

      补码表示法既通过最高位,区别了正数和负数。并且,巧妙地应用了溢出,所得到的计算结果也是正确的。类似于钟表仅需要向前走就可以实现减法,计算机的电路设计中,也只需要设计加法电路。极大地简化了计算机内部电路的复杂程度。

      求一个正数对应的负数的补码的第二种办法:

      1. 先写出这个正数的二进制。
      2. 从二进制的右边开始,遇到第一个1之前,全都填0。
      3. 遇到第一个1之后,把1填下来。
      4. 1之后的全部取反。

      从右往左:未遇到1填0,遇到1填1,然后全部取反

      十进制0-1-2-3-4整数二进制000001010011100补码000111110101100

      5.各种整型类型的数值范围是多少

      类型

      sizeof大小

      二进制位数

      取值范围算式

      取值范围

      char

      1

      1×8 = 8位

      -[2的7次方] ~ +[2的七次方 - 1]

      -128 ~ +127

      short

      2

      2×8 = 16位

      -[2的15次方] ~ +[2的15次方 - 1]

      -32,768 ~ +32,767

      int

      4

      4×8 = 32位

      -[2的31次方] ~ +[2的31次方 - 1]

      -2,147,483,648 ~ +2,147,483,647

      long

      4

      4×8 = 32位

      -[2的31次方] ~ +[2的31次方 - 1]

      -2,147,483,648 ~ +2,147,483,647

      long long

      8

      8×8 = 64位

      -[2的63次方] ~ +[2的63次方 - 1]

      -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807

      次方数比位数少一,是因为最高位被用去做符号位了。

      6. 无符号整型

      如果你确定你不会用到负数,那么请使用​​unsigned​​关键词。表明这个数据类型,是不带有符号位的。既然不带有符号位了,那么原本留给符号位的那一个二进制位,可以用来表示数值。

      类型

      sizeof大小

      二进制位数

      取值访问算式

      取值范围

      unsigned char

      1

      1×8 = 8位

      0 ~ +[2的8次方 - 1]

      0 ~ +255

      unsigned short

      2

      2×8 = 16位

      0 ~ +[2的16次方 - 1]

      0 ~ +65,535

      unsigned int

      4

      4×8 = 32位

      0 ~ +[2的32次方 - 1]

      0 ~ +4,294,967,295

      unsigned long

      4

      4×8 = 32位

      0 ~ +[2的32次方 - 1]

      0 ~ +4,294,967,295

      unsigned long long

      8

      8×8 = 64位

      0 ~ +[2的64次方 - 1]

      0 ~ +18,446,744,073,709,551,615

       

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/u_14452299/6019779,作者:鱼找水需要时间,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:JUC-Java多线程Future,CompletableFuture

      下一篇:手把手入门Springboot2之Web

      相关文章

      2025-05-14 09:51:21

      mysql数据库中decimal数据类型比较大小

      在MySQL中,DECIMAL数据类型用于存储精确的数值,它非常适合用于需要高精度计算的场景,如金融应用。当我们需要在MySQL数据库中比较DECIMAL类型数据的大小时,可以使用标准的比较运算符,如>, <, >=, <=, = 和 <>(或!=)。

      2025-05-14 09:51:21
      MySQL , SQL , 数据类型 , 查询 , 比较 , 示例
      2025-05-08 09:03:07

      【Java 】包装类详解:从基本概念到实战技巧

      在 JAVA 中,八大基础数据类型(int,float,double...)不是继承自 Object,并且不具备对象的特征的。比如:基本数据类型就不能调用方法。

      2025-05-08 09:03:07
      Integer , 包装 , 基本 , 数据类型 , 类型
      2025-05-06 09:18:38

      【30天玩转python】基本语法与数据类型

      Python与其他编程语言最大的区别之一就是它使用缩进来表示代码块,而非大括号 {}。所有缩进必须一致,通常使用4个空格或1个Tab。

      2025-05-06 09:18:38
      Python , 数据类型 , 注释
      2025-04-23 08:18:32

      C语言中的数据类型和运算符

      C语言中的数据类型和运算符

      2025-04-23 08:18:32
      gt , 数据类型 , 表达式 , 赋值 , 运算符
      2025-04-18 07:09:19

      Java学习路线指南

      Java作为一种广泛使用的编程语言,不仅应用在Web开发、移动应用、企业级系统等领域,还在大数据、人工智能等前沿领域占有重要地位。由于其跨平台的特性和强大的社区支持,Java成为许多开发者入门编程或转向高级开发的首选语言。

      2025-04-18 07:09:19
      Java , JVM , 代码 , 学习 , 应用 , 开发 , 数据类型
      2025-04-01 09:21:49

      【C语言】探索数据的存储(上篇)

      【C语言】探索数据的存储(上篇)

      2025-04-01 09:21:49
      c语言 , 后端 , 开发语言
      2025-04-01 09:21:49

      python-数据类型-整数类型与浮点数据类型

      python-数据类型-整数类型与浮点数据类型

      2025-04-01 09:21:49
      字符串 , 数据 , 数据类型 , 浮点数
      2025-03-31 08:49:58

      算法题:剑指 Offer 40. 最小的k个数(题目+思路+代码+注释)时空 O(N*LogN) O(1) 0ms击败56%、32%用户

      算法题:剑指 Offer 40. 最小的k个数(题目+思路+代码+注释)时空 O(N*LogN) O(1) 0ms击败56%、32%用户

      2025-03-31 08:49:58
      c语言 , leetcode , 算法
      2025-03-24 08:53:06

      【编译原理】-- 递归下降语法分析设计原理与实现(C语言实现)

      【编译原理】-- 递归下降语法分析设计原理与实现(C语言实现)

      2025-03-24 08:53:06
      c语言 , 数据结构
      2025-03-24 08:53:06

      【编译原理实验】 -- 词法分析程序设计原理与实现(C语言实现)

      【编译原理实验】 -- 词法分析程序设计原理与实现(C语言实现)

      2025-03-24 08:53:06
      c语言 , 开发语言
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5234798

      查看更多

      最新文章

      【Java 】包装类详解:从基本概念到实战技巧

      2025-05-08 09:03:07

      【30天玩转python】基本语法与数据类型

      2025-05-06 09:18:38

      C语言中的数据类型和运算符

      2025-04-23 08:18:32

      Java学习路线指南

      2025-04-18 07:09:19

      【C语言】探索数据的存储(上篇)

      2025-04-01 09:21:49

      算法题:剑指 Offer 40. 最小的k个数(题目+思路+代码+注释)时空 O(N*LogN) O(1) 0ms击败56%、32%用户

      2025-03-31 08:49:58

      查看更多

      热门文章

      C语言结构体与结构体指针的使用

      2023-03-08 10:38:36

      指针(*)、取地址(&)、解引用(*)与引用(&)

      2023-04-10 08:54:19

      20.6.5快速排序头文件的使用

      2023-03-20 02:06:43

      C++ 核心 2.引用

      2023-02-13 07:38:09

      0005 c语言 输入入门(1)

      2023-03-23 07:32:15

      0012 大小写转换 c语言

      2023-03-21 10:30:53

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      Go 语言入门很简单 -- 2. Go 的数据类型 #私藏项目实操分享#

      9.4运算符

      C/C++创建tty,创建终端

      0021 c语言 整数求和

      Java中的装箱与拆箱详解

      【自定义类型详解】(结构体、枚举、联合体)

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号