零基础学C语言(4):基本数据类型——整型
haoteby 2025-09-04 04:55 7 浏览
上一节我们用如何用程序写一个计算器的例子,延伸到为啥会有数据类型、变量和常量的存在,并介绍了赋值和等于的区别。从这节开始详细分析这三个概念,从基本数据类型的整型开始,不多比比,直接上主菜。
BOOL型
上一节那张图大家还有印象不,算了,我再放一张吧。
在讲基本类型前,先说说一个特殊的存在——逻辑类型。我们用bool表示,当bool值为1,表示正确;bool值为0,表示错误。
记住,bool类型只有1和0两个值。如果你要在程序中使用bool类型的数据,记得引用#include <stdbool.h>这个头文件。第一节我们说了,用人家东西就要跟别人打声招呼。使用方式为bool a;
一般来说,我们使用bool类型时,不具体赋值0和1,而是用false和true代替,值是一样的,主要是仪式感。
还有一点需要强调,那就是,值为何才表示正确呢?
记住,在C语言中非0即为真(真:正确),例如5、20都是真,-10也是真,只有0表示假(假:错误)。
给大家演示一下:
这里使用if语句进行验证,还记得我们之前说的main函数{}作用吗,表示括号的程序属于main()里的,这里{}里的内容属于if()语句的。这段程序写的是,如果10是真,就打印“aaa”;如果-250是真,就打印“bbb”;如果0是真,就打印“ccc”,我们看执行结果:
从结果看,10和-250都是真,0为假,即验证了C语言中非0即为真。
整型
整型分为char、short、int、long,最大的特点就是在不同平台或编译器下所分配的内存空间不同,这里我们统一按32位系统处理。
1. char
char其实是一个字符型,但也可以定义整型,在32位操作系统中储存大小为1字节。
这里出现了一个新的概念——字节(Byte,简写为B)。字节是计算机信息存储容量的计量单位,和大家用米做计量长度的单位一样,只不过这里是计算机用的单位。
大家都知道,电脑只认识二进制数字串,就是“0”和“1”,一个“0”或者“1”,就是一位,位用bit(比特)表示,那101010就是6个数字,就是6位,32位系统就表示一次性可以处理32位数据。
而一个字节是8位,也就是有8个二进制数。而字符型char大小为一个字节。
每一种基本数据类型都有两种形式:有符号数(signed)和无符号数(unsigned)
如果是无符号数,最小是0000 0000,为0,最大为1111 1111,即2^8-1,为256。
如果是有符号数,最高位为符号位,0表示正,1表示负。
0 000 0000~0 111 1111,范围为0~127;1 000 0000~1111 1111,范围则为-1~128;所以unsigned char范围是0~255,signed char的范围是-128~127。
注:
①.如果不写signed或者unsigned,则代表默认有符号signed
②.所有数据在计算机中均以补码的形式存放
啥叫补码?
你看,C语言就是这样有趣,一环套一环。在计算机中有三种码制:原码、反码和补码,简称原反补。
正数:原反补一致,均是原码本身。
(char)举例:
为啥用char型的数举例呢,因为字节少,没别的原因。
正数:10
原码:0 000 1010(二进制、八进制、十进制、十六进制之间的转换会算吧,高中应该都学过的)
反码:0 000 1010
补码:0 000 1010
再看负数:-10
原码:1 000 1010
反码:1 111 0101反码是在原码除符号位不变,其余位取反
补码:1 111 0110 补码 = 反码 + 1
这也是计算机中对于数值-10最终的存放形式。
因为char型数据的数值较小,所以会导致数据的越界问题,而越界不会报错。
假如给signed char型数据赋值129(signed char的范围是-128~127),那我们最终看到的数是多少呢?
先看结果:
答案是-127,我透,你电脑坏掉了吧,额……虽然我的电脑用了五年,确实卡的要死,但真的没有坏掉,那为啥是-127呢?
我们来推理下:
首先129是个正数,所以原反补一样,即
原码:1000 0001
反码:1000 0001
补码:1000 0001
唉,这个时候计算机看到最高位是1,又是个有符号的数,就会认为这是一个负数,会按照负数的方式处理。计算器存的是补码,给我们显示的是原码,所以我们要倒推出原码来:
补码:1000 0001
反码:1000 0001 补码 = 反码 + 1.那么反码 = 补码 - 1
原码:1111 1110 符号位保持不动,其余各位取反
结果为-127,是不是很神奇。
char整型就介绍到这里,char字符型之后再说。
2.short
短整型,占两个字节,也就是16位,定义方法为short a;前面有unsigned就是无符号整型,数据值的范围为-32768~32767,没有就默认有符号,数据值的范围为0~65535。
3. int
整型(拆解hello world留下的坑终于填了,我太好了),占4个字节,也就是32位,定义方法为int a;前面有unsigned就是无符号整型,数据值的范围为……按计算器太麻烦了,反正不超过10位数就行。
说起int,我想起一个血泪史,看过前文的应该都知道,我其实不是直接接触C语言的,而是从单片机学起的。
51单片机,是个8位的,那里面的int是占2个字节,然后我就一直以为int 占两个字节,直到我学C语言的时候,书上写int是4个字节时,我笑了,举手就向C语言老师纠错,“老师,int是两个字节,书上错了。”我永远也忘不了老师那种看沙雕的眼神。
上课玩手机它不香吗?睡觉它不香吗?上课和心仪的对象聊天它不香吗?啪!上大学还挑课本的毛病,简直有毒。从此我就明白了一个道理:少说话,多做事!
虽然我被狠狠打脸,但是我们可以看到,在不同的系统下,数据类型所占字节数是不一样的,在8位单片机下,int确实是2个字节,和32位下的short一样,这也是一开始我强调是在32位系统下的分析。
记住,如果以后做题碰到问字节的问题,没有给明是什么操作系统,一律默认32位。
3. long
长整型,也是占4个字节(32位操作系统中,x86),但在64位操作系统下long就占8字节了(x64)。
以上是整型数据类型的基本类型了,但有时候大家会看到long long或者是long int这种写法,其实也没什么稀奇的,32位中,long long占8字节,long int占4字节,大家不必纠结,因为这些都不常见,也没什么卵用。
但你们知道,我是个好人,上面这么多内容,我怎么忍心看着大家死记硬背呢。
这里给大家列了一张表,不用多说了吧,点赞、关注和转发,懂我意思吧。
总结
本节给小伙伴们详细介绍了char、short、int和long这四种基本整型数据类型,在介绍之前,还给大家讲了一种特殊的数据类型,叫bool,使用方法也详细介绍了。
同时还穿插了原反补三码,以及数据越界(注意,数据越界编译器不报错!不报错!不报错!)的分析,以及各种整型数据类型所占字节数、取值范围。
那既然有整型,有没有非整型,比如小数呢,当然有啦,下一节继续!
上节作业讲解
下面哪种赋值方式符合C语言标准(假设所有变量均已定义)?
A = b; 4.5 = xs; c = 5 + 8; sd = c+7; d = 79.3 + d; a+b = 89; a == 23; i++; ++i;
根据上节所学的知识,赋值号的左边必须是一个变量,复制号右边不限制,符合上述条件的是A = b; c = 5 + 8; sd = c+7; d = 79.3 + d; a == 23; i++; ++i;
最后两个为什么也符合呢?
这两种都表示i = i + 1;,也叫自增1,那++i和i++有啥区别呢?
嘿嘿……
本节作业
定义一个signed char型变量a,a = 128; 输出a的值是多少?请具体分析,并打印验证,欢迎小伙伴在评论区晒出你的作业!.
温馨提示:第一节有一个很奇怪的链接,大家记得保存哦~
相关推荐
- 软考在即,不如来快速复习吧_软考百度贴吧
-
5.29号就要考试的小伙伴方不方,不方的都是学霸!每天被工作压得喘不过气的浪孩只能临阵磨枪了。先来看看软件设计师的分数分布吧,知己知彼才能百战不殆嘛...
- 数据类型、运算符与表达式_数据类型,运算符与表达式的关系
-
在C语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。一、C中的类型可分为以下几种:1、基本类型:它们是算术类型,...
- 计算机组成原理复习要点(复习必过)
-
计算机组成原理复习要点一、...
- 2018年下半年网络工程师上午试题_2018年网络工程师上半年真题答案详解
-
2018下半年网络工程师上午试题分析与解答试题(1)采用n位补码(包含一个符号位)表示数据,可以直接表示数值_(1)。试题分析采用n位补码(包含一个符号位)表示数据时,用1位(最高位)表示数的符...
- 轻松办公-OfficeExcel函数精解(二十二)
-
轻松办公-OfficeExcel函数精解(二十二)1、...
- 企业无码药品快速上传操作指南(上)
-
根据国家医保局等四部门发布的《关于加强药品追溯码在医疗保障和工伤保险领域采集应用的通知》,自2025年7月1日起,医保定点医药机构在销售药品时必须扫描药品追溯码方可进行医保基金结算。对于2025年7月...
- C/C++编程知识:整型数据在内存中的存储!讲解+示例
-
1.整型的归类charshortint...
- 1.2 计算机内信息的表示与存储_计算机中的信息存储
-
1.2计算机内信息的表示与存储上一节介绍了计算机发展及计算机简单的工作原理,引入了二进制的概念,讲解了十进制与二进制之间的转换关系。本节将进一步介绍如何用二进制表示现实世界的事物。计算机内部的程序和...
- Bit Fiddle for Mac(字符进制转换工具) v1.4激活版
-
是否曾经想知道1的二进制补码写成十六进制数字是什么?还是需要快速的ASCII表?BitFiddle可以帮助您!BitFiddlemac破解版是一款不同进制之间进行数值转换的工具,这款软件能够将数...
- 零基础学C语言(4):基本数据类型——整型
-
上一节我们用如何用程序写一个计算器的例子,延伸到为啥会有数据类型、变量和常量的存在,并介绍了赋值和等于的区别。从这节开始详细分析这三个概念,从基本数据类型的整型开始,不多比比,直接上主菜。BOOL型上...
- C语言-自运算、位运算、取反运算_c的位运算符
-
①自加自减运算...
- 第十一节课 原码 反码 奇偶校验码
-
大家好,我是电器电。今日我们先来介绍一下原码:在生活中正数和负数之分正数用十表示,负数用一表示。但在数字设备中机器不会识别正负号所以会在二进制码的最高位用0表示正,用1表示负。如(+105)原=011...
- 学习永远不晚 C语言试题及答案_学习永远不晚 C语言试题及答案解析
-
、单项选择题(本大题共20题,每题2分,共40分)1、以下不是C语言的特点的是(B)A、C语言简洁、紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件进行操作D、C语言移植性好2...
- 整型的范围为什么是-32768 至 32767
-
初学PLC者都会有一个问题比较困扰,为什么PLC中整型数的范围是-32768~32767?直接回答就是因为计算机内表示数值使用的是补码,而不是原码,所以你才有这样的困扰。所谓原码就是这个数本身的二进制...
- 基础中的基础,不得不看的数字电路题目
-
1)10110010反码是(),补码是()。(填空)解析:本题考查数字电路中最基础的码制知识。...