【C语言复习】第四篇、有关C语言数据类型的知识

news2024/11/27 9:32:25

目录

第一部分、前言

第二部分、初识数据类型 

1、C语言为啥要这么多的数据类型?

2、表格中所占内存的大小是如何计算得到的?

2.1、计算机的内数据存储单位

2.2、关键字sizeof的使用说明(具体后面会更详细的解释)

3、为什么char类型的数值范围是-128~127,为啥不是-127~128?

3.1、整型数据在计算机内的编码方式

3.2、为啥要补码?

3.3、回答char类型的数值范围为啥是-128~127?

4、为啥int和long的数值范围是一样的?

5、这些类型如何输出?

6、如何将一个类型转换成另一个类型?

第三部分、进阶数据类型 

 1、整型家族

1.1、为什么char和unsigned char属于整型?

1.2、26个大小写英文字母的ASCII码数值

2、浮点家族

第四部分、总结及内容全览


第一部分、前言

        该文章是我复习C语言的笔记,笔记中给出的各种问题及解答都是我之前不会的,或者我之前存在疑惑的,或者我新学到的,所以很多细节的地方还希望大家去参考详细的学习资料。

第二部分、初识数据类型 

        文章是我复习C语言的笔记,所以笔记中给出的各种问题及解答都是我之前不会的,或者我之前存在疑惑的,或者我新学到的,所以很多细节的地方还希望大家去参考详细的学习资料。

数据类型

名称

占内存的大小

表达的数值范围

char

字符数据类型

1byte

-128~127

unsigned char

无符号字符数据类型

1byte

0~255

short(int)

短整型

2byte

-32,768~32,767

unsigned short(int)

无符号短整型

2byte

0~65535

int

整形

4byte

-2^31~-2^31-1

unsigned int

无符号的整型

4byte

0~2^32-1

long(int)

长整型

4byte

-2^31~-2^31-1

long long(int)

更长的整形

8byte

-2^63~2^63-1

float

单精度浮点数

4byte

-3.4x10^-38 ~ 3.4x10^38

double

双精度浮点数

8byte

-1.7x10^-308 ~ 1.7x10^308

1、C语言为啥要这么多的数据类型?

        这么多的数据类型,其实是为了更加丰富的表达出生活中的各种数值提高空间利用率。也可以这样理解学习C语言主要是为了和计算机沟通,增加这些数据类型能够提高与机器对话的效率。

2、表格中所占内存的大小是如何计算得到的?

2.1、计算机的内数据存储单位

        在解决这个问题之前,首先明白下面两个问题:

  • 计算机最小的数据存储单位是字节(Byte)(这个很重要,记住!)
  • 计算机最小的数据传输单位是:位/比特(bit)

内存的换算关系如下:

        1TB  = 1024GB

        1GB  = 1024MB

        1MB  = 1024KB

        1Kb   = 1024byte(字节)

        1byte = 8 bit(比特/位)

  • 那我又有一个疑问,那32位机和64位机又是什么意思呢? 

        其实这表示处理器一次处理数据的能力,32位 = 一次能处理32bit位的数据,64位 = 一次能处理64bit为的数据。

2.2、关键字sizeof的使用说明(具体后面会更详细的解释)

        关键字sizeof:以字节为单位给出与变量或类型在内存中所占的空间大小。

3、为什么char类型的数值范围是-128~127,为啥不是-127~128?

3.1、整型数据在计算机内的编码方式

        计算机中的编码方式主要有原码,反码,补码三种方式。而对于整形来说:数据存放内存中其实存放的是补码。

  • 正数的原码、反码、补码三者一致;

例如:int a = 666

        原码 = 反码 = 补码 = 00000000 00000000 00000010 10011010

  • 负数的补码 = 原码符号位不变,取反再加1;

例如:int a = - 666

        原码 = 10000000 00000000 00000010 10011010

        反码 = 111111111 111111111 111111101 01100101

        补码 = 111111111 111111111 111111101 01100110

  • 得到了补码,怎么将补码又变成原码呢?

法一、原码 = 补码符号位不变,取反再加1;(好记)

        补码            = 111111111 111111111 111111101 01100110

        补码的反码 = 10000000 00000000 00000010 10011001

        原码            = 10000000 00000000 00000010 10011010

法二、逆过程推算,原码 = 补码减1,符号位不变再取反 ;(不好记) 

        补码            = 111111111 111111111 111111101 01100110

        补码减一     = 111111111 111111111 111111101 01100101

        原码            = 10000000 00000000 00000010 10011010

3.2、为啥要补码?

        在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器减法运算是通过转化成加法运算来实现的)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路

  • 为啥说补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路?

        由上述补码求反码的反码的方法一可知:对于负数,其补码 = 原码符号位不变,取反再加1;原码 = 补码符号位不变,取反再加1;会发现这个原码到补码,补码再到原码这个过程是一致的。

3.3、回答char类型的数值范围为啥是-128~127?

        char大小为1个字节,最高位表示符号位,又因为0000 0000表示0,那么1000 0000的最高位为符号位,总不能它也表示为0,为了提高存储效率,计算机就直接将1000 0000翻译为-128。

        下图可以帮助理解:

4、为啥int和long的数值范围是一样的?

        正常理解下long的数值范围应该是比int数值范围要更广,但是表格中为啥一致呢?

        其实这个不是绝对的,这是取决于当前的编译器,在vs2017的编译器中默认int和long的数据类型大小一致。

5、这些类型如何输出?

%d

int

%c

char

%s

字符串

%u

unsigned int

%f

float

%lf

double

%p

打印地址printf("%p",&a);//观察a的地址,以16进制打印

%x

printf("%x",50);16格式进制打印

6、如何将一个类型转换成另一个类型?

        实现类型之间的转换可以通过强制类型转换的方法来实现。如下图,8.66为浮点类型的数据,通过:(类型)变量 的方式来实现强制类型转换。

第三部分、进阶数据类型 

        关于数据类型进阶的知识就会设计到数据存储的问题,数据存储的文章如下:

 1、整型家族

        下面都为整型家族的数据类型。

char = signed char//大多数编译器都是这么规定的,但是C99没有明确规定
unsigned char

short = signed short [int]
unsigned short [int]

int = signed int
unsigned int

long = signed long [int]
unsigned long [int]

1.1、为什么char和unsigned char属于整型?

         这也是我之前很疑惑的地方,其实这和计算器的存储有关系,根据ASCII码表可以知道,每个英文字母都对应一个ASCII码的数值,而这些数值都是整数。我个人的理解是字符其实在内存中是以整数的形式进行保存的。因此字符类型归属于整型家族。

1.2、26个大小写英文字母的ASCII码数值

        做个记录,方便自己查找。

大写字母ASCII值小写字母ASCII值
A65a97
B66b98
C67c99
D68d100
E69e101
F70f102
G71g103
H72h104
I73i105
J74j106
K75k107
L76l108
M77m109
N78n110
O79o111
P80p112
Q81q113
R82r114
S83s115
T84t116
U85u117
V86v118
W87w119
X88x120
Y89y121
Z90z122

2、浮点家族

float
double

第四部分、总结及内容全览

        数据类型这里只是简单后复习了一下,以上为博主复习总结的一些知识点,有很多的不足,还希望读者见谅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python 随练】求最大公约数和最小公倍数

题目: 输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 简介: 在本篇博客中,我们将解决一个常见的数学问题:求两个正整数的最大公约数和最小公倍数。我们将提供问题的解析,并给出一个完整的代码示例…

【新星计划Linux】——Linux介绍与了解Linux与Windows系统区别

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 一.Linux系统 1.Linux系统与Windows系统的区别 (1)性…

【JavaScript】ES6新特性(4)

14. Proxy 代理 Proxy 可以对目标对象的读取、函数调用等操作进行拦截,然后进行操作处理 它不直接操作对象,而是像代理模式,通过对象的代理对象进行操作,在进行这些操作时,可以添加一些需要的额外操作 14.1 Object.d…

2023年DAMA-CDGA/CDGP数据治理工程师认证这里报名

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

追梅西的少年

* * * 原创:刘教链 * * * 号外:今天在“刘教链Pro”发表了头条《鼠头和鸭脖——中心化验真的困境》,以及次条《内参:美SEC执法主管表示,DeFi是纯粹的欺诈!??》,欢迎关注…

云安全技术(六)之云架构模型

云架构模型 1.1 舍伍德业务应用安全架构(SABSA) 舍伍德业务应用安全架构(Sherwood Applied Business Security Architecture,SABSA)的官方网站是 。SABSA提供了一组组件,这些组件可部分或全部用作任何系统的安全架构方www.sabsa.org法。如下&#xff1a…

【Flutter】Flutter中如何获取子类Widget并调用它的方法

文章目录 一、前言二、理解 Flutter 中的 Widget三、如何在 Flutter 中获取子类 Widget1. 使用 GlobalKey2. 使用 context.findAncestorWidgetOfExactType 四、如何调用子类 Widget 的方法五、如何在 Flutter 中传递数据六、总结 一、前言 如果你想深入学习 Flutter&#xff0…

如何打造优秀Web3产品

近日,我们采访了Mysten Labs的联合创始人兼首席执行官Evan Cheng,探讨了Web3技术对消费者的价值、Web3行业应该如何更好地自我诠释,以及它对产品开发的影响。 您曾谈到Web3作为一种所有权实验,这种新技术可能会改变消费者的行为。…

Can’t connect to MySql server on ‘localhost’(10038)

一般是一下几个原因: 1、MySQL服务没有启动 2、用户没有权限使用远程连接 3、linux中防火墙中没有配置MySQL端口(3306) 使用命令service mysqld status 或者service mysql status 命令来查看mysql的启动状态 启动MySQL命令: …

±0.1℃精度、超低功耗的高精度数字模拟混合信号温度传感芯片

温度芯片感温原理基于CMOS半导体PN节温度与带隙电压的特性关系,经过小信号放大、模数转换数字校准补偿后,数字总线输出,具有精度高、一致性好、测温快、功耗低、可编程配置灵活、寿命长等优点。 温度芯片内置16-bit ADC,分辨率0.…

用代码生撸qsort函数来实现冒泡排序

作者主页:paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《C语言》专栏,本专栏是针对于大学生,编程小白精心打造…

Windows 系统彻底卸载 SQL Server 通用方法

Windows 系统彻底卸载 SQL Server 通用方法 无论什么时候,SQL Server 的安装和卸载都是一件让我们头疼的事情。因为不管是 SQL Server 还是 MySQL 的数据库,当我们在使用数据库时因为未知原因出现问题,想要卸载重装时,如果数据库…

Jetson Xavier NX 备份与烧录固态系统

目录 1 需要的硬件 2 需要安装在ubuntu上的软件 2.1 安装gparted 2.2 安装nvidia官方烧录包 2.2.1 下载 2.2.2 配置 3 备份系统 4 烧入系统 1 需要的硬件 像是 nx,nx附带的固态硬盘,显示器 这些就赘述了 一个ubuntu实体机(虚拟机听说…

ansible-roles模块

roles用于层次性,结构化地组织playbook,roles能够根据层次型结构自动装载变量文件,tasks以及handlers等。要使用只要载playbook中使用include指令引入即可。 (roles就是通过分别将变量,文件,任务&#xff…

u盘中毒文件夹数据丢失怎么恢复?这里有4个恢复方案

您是否曾经遇到过U盘中毒的情况?连累到文件夹内的数据文件消失了,如果丢失的是重要数据,这或许会对我们工作或学习带来了极大的困扰。为了解决您的困扰,下面将根据不同情况给予不同的U盘中毒数据恢复方案,帮助您尽快找…

小红书各行业流量分析:普通人怎么有效使用小红书?

随着互联网的发展,越来越多的人开始利用自媒体平台赚钱。小红书是近年来兴起的一种新型自媒体平台,也是国内最大的海外购物分享平台之一。随着小红书用户的不断增加,小红书的流量趋势也在发生着变化。那么,在各行业的流量趋势中&a…

驱动开发:文件微过滤驱动入门

MiniFilter 微过滤驱动是相对于SFilter传统过滤驱动而言的,传统文件过滤驱动相对来说较为复杂,且接口不清晰并不符合快速开发的需求,为了解决复杂的开发问题,微过滤驱动就此诞生,微过滤驱动在编写时更简单,…

XV-440-10TVB-1-50伊顿触摸屏EATON

​ XV-440-10TVB-1-50伊顿触摸屏EATON XV-440-10TVB-1-50伊顿触摸屏EATON ESD与dcs是完全分离的。DCS主要用于过程工业参数指标的动态控制。在正常情况下,DCS动态监控着生产过程的连续运行,保证能生产出符合要求的优良产品。而ESD则是对于一些关键的工艺…

python获取某博热搜数据并保存成Excel

python获取某博🧣热搜数据 一、获取目标、准备工作二、开始编码 一、获取目标、准备工作 1、获取目标: 本次获取教程目标:某博🧣热搜 2、准备工作 环境python3.xrequestspandas requests跟pandas为本次教程所需的库&#xff0c…

AM@空间曲面@平面@面面位置关系@点面距离

文章目录 曲面曲线平面点法式方程不共线的3点确定一个平面方程同解平面方程的一般式特别情形与坐标轴平行的平面与坐标轴垂直与坐标面平行的平面ABC0例 截距式两平面的夹角👺两平面的位置关系垂直关系平行关系例 点到平面的距离小结例 曲面 空间解析几何中"曲…