首页 > 其他分享 >第三章 数据与C

第三章 数据与C

时间:2024-11-09 16:19:27浏览次数:3  
标签:第三章 int 32 long C语言 double 类型 数据

在本章中主要学习的是基本数据类型的概念,类型的大小,调用和打印。

在学习基本数据类型之前,要先了解常量与变量。

常量就是预先规定,不会再此发生变化的量,变量则与之相反,会发生变化。

概念

基本数据类型可以分为两大类:整型和浮点型。

储存单元

首先,要认识一下计算机的储存单元

最小的存储单元是位(bit),可以储存0或1。

字节(byte)是常用的计算机存储单位。对于几乎所有的机器,1字节均为8位。既然1位可以表示0或1,那么8位字节就有256(2的8次方)种可能的0、1的组合。通过二进制编码(仅用0和1便可表示数字),便可表示0~255的整数或一组字符。

字(word)是设计计算机时给定的自然存储单位。对于8位的微型计算机(如,最初的苹果机),1个字长只有8位。从那以后,个人计算机字长增至16位、32位,直到目前的64位。计算机的字长越大,其数据转移越快,允许的内存访问也更多。

整型

整型就是整数型,通常有int ,long int,short int,long long int ,unsigned int,unsigned short int等,由它们的名字我们可以知道其最大的不同在于其大小,即占用的储存空间不同。

我们通常使用int类型,long int比int储存空间要大,short int比int的储存空间要小,这是硬性规定,其具体大小在不同机型上有所不同。例如,过去的一台运行Windows 3.x的机器上,int类型和short类型都占16位,long类型占32位。后来,Windows和苹果系统都使用16位储存short类型,32位储存int类型和long类型(使用32位可以表示的整数数值超过20亿)。现在,计算机普遍使用64位处理器,为了储存64位的整数,才引入了long long类型。

现在,个人计算机上最常见的设置是,long long占64位,long占32位,short占16位,int占16位或32位(依计算机的自然字长而定)。

现在,个人计算机上最常见的设置是,long long占64位,long占32位,short占16位,int占16位或32位(依计算机的自然字长而定)。

对于16位机,short和int的最小取值范围是[−32767,32767];对于32位机,long的最小取值范围是[−2147483647,2147483647]。

比较特殊的是unsigned int,unsigned表示这是储存不为负数的数,最小取值范围为[0,4294967295]。long long类型是为了支持64位的需求,最小取值范围是[−9223372036854775807,9223372036854775807];unsigned long long的最小取值范围是[0,18446744073709551615]。

那么,存在这么多的数据类型,我们又该如何选择呢?

首先,考虑unsigned类型。这种类型的数常用于计数,因为计数不用负数。而且,unsigned类型可以表示更大的正数。其次,看int函数,如果该数据过大,选long,long long,如果过小,选short。

字符类型

char类型用于储存字符(如,字母或标点符号),但是从技术层面看,char是整数类型。计算机使用数字编码来处理字符,即用特定的整数表示特定的字符。

C语言允许在关键字char前面使用signed或unsigned。把char实现为有符号类型,这意味着char可表示的范围是-128~127。把char实现为无符号类型,那么char可表示的范围是0~255。

如果要把一个字符常量初始化为字母A,不必背下ASCII码,用计算机语言很容易做到。通过以下初始化把字母A赋给grade即可:

char grade = 'A';
非打印字符(转义序列)

有些ASCII字符打印不出来,C语言提供了3种方法表示这些字符。

第一种是,使用ASCII码。例如,蜂鸣字符的ASCII值是7,因此可以这样写:
char beep = 7;

第2种方法是,使用特殊的符号序列表示一些特殊的字符。也就是转义序列。\a
警报(ANSI C)
\b 
退格
\f
换页
\n
换行

\r
回车
\t
水平制表符
\v
垂直制表符
\\
反斜杠(\)

\'
单引号
\"
双引号
\?
问号
\0oo
八进制值(oo必须是有效的八进制数,即每个o可表示0~7中的一个数)

\xhh
十六进制值(hh必须是有效的十六进制数,即每个h可表示0~f中的一个数)

浮点型

浮点型就是小数形式,计算机通常会把浮点数分成小数部分和指数部分来表示,且分开储存这两部分。

C语言中的浮点类型有float、double和long double类型。

C标准规定,float类型必须至少能表示6位有效数字,且取值范围至少是10-37~10+37。前一项规定指float类型必须能够表示33.333333的前6位数字,而不是精确到小数点后6位数字。通常,系统储存一个浮点数要占用32位。其中8位用于表示指数的值和符号,剩下24位用于表示非指数部分(也叫作尾数或有效数)及其符号。

double类型和float类型的最小取值范围相同,但至少必须能表示10位有效数字。一般情况下,double占用64位而不是32位。

C语言的第3种浮点类型是long double,以满足比double类型更高的精度要求。

_Bool类型

C99标准添加了_Bool类型,用于表示布尔值,即逻辑值true和false。因为C语言用值1表示true,值0表示false,所以_Bool类型实际上也是一种整数类型。但原则上它仅占用1位存储空间,因为对0和1而言,1位的存储空间足够了。

复数和虚数类型

简而言之,C语言有3种复数类型:float _Complex、double _Complex和long double _Complex。例如,float _Complex类型的变量应包含两个float类型的值,分别表示复数的实部和虚部。

类似地,C语言的3种虚数类型是float _Imaginary、double _Imaginary和long double _Imaginary。

如果包含complex.h头文件,便可用complex代替_Complex,用imaginary代替_Imaginary,还可以用I代替-1的平方根。

可移植类型:stdint.h和inttypes.h

C语言提供了许多有用的整数类型。但是,某些类型名在不同系统中的功能不一样。C99新增了两个头文件stdint.h和inttypes.h,以确保C语言的类型在各系统中的功能相同。

比如说,使用int32_t类型编写程序,并包含stdint.h头文件时,编译器会把int或long替换成与当前系统匹配的类型。

变量声明

下面都是有效的声明:

int erns;
int hogs, cows, goats;

可以分别在4条声明中声明各变量,也可以在一条声明中声明4个变量。

初始化变量

在C语言中,初始化变量可以在声明时进行。

以下为三种方式,且最后一种只是对cats进行赋值,容易出错。

cows = 112;int hogs = 21;
int cows = 32, goats = 14;
int dogs, cats = 94; //有效,但是这种格式很糟糕 

数据的打印

可以使用printf()函数打印数据类型的值。

列如,%d指明了在一行中打印整数的位置。%d称为转换说明,它指定了printf()应使用什么格式来显示一个值。

打印unsigned int类型的值,使用%u转换说明;打印long类型的值,使用%ld转换说明。C语言有多种printf()格式。对于short类型,可以使用h前缀。

printf()函数使用%f转换说明打印十进制记数法的float和double类型浮点数,用%e打印指数记数法的浮点数。

printf()函数用%c指明待打印的字符。

特别要注意的是,在使用打印函数时,要关注其大小,不然可能出现溢出,其次要一一对应,最后要注意使用的是十进制,八进制还是十六进制。

进制

以十进制显示数字,使用%d;以八进制显示数字,使用%o;以十六进制显示数字,使用%x

另外,要显示各进制数的前缀0、0x和0X,必须分别使用%#o、%#x、%#X。

我们可以用下面这段代码看看其差别

/* bases.c--以十进制、八进制、十六进制打印十进制数100 */
#include 
int main(void)
{    int x = 100;    
printf("dec = %d; 
octal = %o; 
hex = %x\n", x, x, x);    
printf("dec = %d; octal = %#o; hex = %#x\n", x, x, x);    
return 0;
}

标签:第三章,int,32,long,C语言,double,类型,数据
From: https://blog.csdn.net/jjwm123/article/details/143645864

相关文章

  • 如何进行数据库连接池的参数优化?
    以下是进行数据库连接池参数优化的一些方法:一、确定合适的初始连接数:考虑因素:数据库的规模、应用程序的启动需求以及预期的初始负载。如果数据库规模较小且应用程序启动时对数据库的即时访问需求不高,可以将初始连接数设置得较少,比如3到5个;如果数据库较大或应用启动后很快......
  • 基于YOLO11/v10/v8/v5深度学习的煤矿传送带异物检测系统设计与实现【python源码+Pyqt5
    《------往期经典推荐------》一、AI应用软件开发实战专栏【链接】项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.......
  • 数据结构:链表oj题
    目录题1.删除链表中的某个元素val题目表述:思路1:在源链表中进行删除更改思路2:创建一个新链表题2:反转一个链表问题描述:思路1:在源链表内部进行操作思路2:创建一个新链表题3:寻找链表中间位置题目描述:思路1:思路2:快慢指针题1.删除链表中的某个元素val题目表述:......
  • 1.Kotlin-基本数据类型及运算
    一.Kotlin基本数据类型基本数据类型包括:Byte,Short,Int,Long,Float,Double数据类型推断:Kotlin中的数据类型全部以val进行声明,编译器会自动推断数据类型当然也可以在变量名后加:数据类型的形式,显示指明数据类型valbyteNumber:Byte=127;//Byte1.整数类型类......
  • linux搭建大数据环境
    前期准备工作友情提醒提前安装好vmware软件,准备好连接虚拟机的客户端一.基础环境1.配置ip地址修改ip配置文件[root@node1/]#vim/etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"#1.把dhcp修改成staticBOOTP......
  • QT中大量数据存储至excel的问题解决
            因为这个问题困扰了我很久,所以在这里记录一下,顺便给可能会遇到类似问题的人提供一点帮助。        在qt中,如果用C++处理数据保存到excel,正常来说在pro文件中添加axcontainer 然后就能够调用到excel,但是这只能适用于数量级没那么大时的需求。  ......
  • 数据缩放方法总结
    数据缩放(DataScaling)是数据预处理的一种重要方法,用于将不同取值范围的特征值调整到统一的范围,从而提高机器学习模型的性能和稳定性。本文将总结常见的数据缩放方法,并分析它们的优缺点及适用场景。1.均值归一化(MeanNormalization):将数据缩放到[-1,1]的范围内,使数据的均值为0。具......
  • esp32实现简单的kv数据库
    我来帮你优化代码,使用SPIFFS(SPIFlashFileSystem)来实现数据持久化存储。#include<ESP8266WebServer.h>#include<ESP8266WiFi.h>#include<FS.h>#include<ArduinoJson.h>//WiFi设置constchar*ssid="你的WiFi名称";constchar*password=&quo......
  • 基于Python+django的爬虫的李宁品牌销售数据分析系统设计与实现(源码+文档+部署讲解等
    课题简介基于Python+django的爬虫的李宁品牌销售数据分析系统是企业了解市场表现、优化销售策略的有力工具。系统的爬虫部分能够从多个电商平台、官方销售网站等渠道收集李宁品牌产品的销售数据,包括商品名称、型号、价格、销量、销售时间、购买者地区等信息。利用Py......
  • 基于Python+Django的旅游景点数据分析与推荐系统的设计与实(源码+文档+部署讲解等)
    课题简介基于Python+Django的旅游景点数据分析与推荐系统,为游客提供了智能化的旅游决策支持。系统从多个数据源收集旅游景点数据,包括景点名称、位置、类型(如自然景观、历史古迹)、门票价格、开放时间、游客评价等。利用Python的数据分析库,对这些数据进行清洗和整理,......