C 语言的数据类型 【第一章-01】

这一节讲解关于 C语言 数据类型的内容,在这之前,我需要先简单介绍 C语言 的应用场景

C语言编写 的程序紧凑而高效,是 嵌入式系统编程 的流行语言,在 操作系统 开发中表现卓越,在Linux 开发中也扮演着极其重要的角色(后面会介绍到 Linux C编程)

C语言是一个易懂、可靠,兼备 高效性 与 可移植性 ,强大且灵活(Python 的编译器和解释器就是用C语言编写的),面向程序员(用C可访问计算机硬件、操控内存中的位)的高级语言。

总之,C语言 是一个非常底层(访问硬件、操控内存)的语言 ,它的效率是无与伦比的。与此同时,C语言 也要求程序员承担更多的责任(涉及指针的编程错误难以察觉)。因此,在编写C程序时,我们需要时刻保持警惕,以保持程序的高质量。

注:C语言 的特性决定了它会有更多的、更精确的数据类型 

第一章 数据类型

1.1 数据类型关键字

intlongshort
floatdoublechar
unsignedsignedvoid
_Bool_Complex_Imaginary

1.2 数据类型

1.1.1 int、 long、 short 与 signed、 unsigned

int、 long、 short 都是用来存储整数,当使用它们时,程序会在内存中,开辟一个空间,以二进制数的形式存储整数数值(计算机的所有数据都是以二进制数存储的,同时计算机也只认得二进制数  ____待填充____)

它们3个的区别 在于开辟空间的大小

        一般而言 int 的所占空间是 一个机器字长(64/32位Windows系统的64/32位就是字长)ISO C 规定 int的取值范围最小为    [-32768, 32767]  (最小占位2字节 16位 1字节是8位  1位指的是一个二进制位,8位则是8个二进制位 ____待填充____)

        C规定 short 占用的空间不能多于 int ,long 占用的空间不能少于 int ,因此,一般来说 int 要么与 short 一样大,要么与 long 一样大。

        那么为什么要有int呢? 因为在 C语言 当中,int 类型被认为是 计算机处理整数类型时最高效的类型 (来源于《C Primer Plus(第6版)中文版》44页第二段第二条句子)

        signed、unsigned 是用来修饰 int 等整数类型关键字的,用于表示 有符号 与 无符号

用法将会在稍后进行说明

 1.1.2 char

char 是用来存储字符的  它的存储空间一般占 1个字节(8位)

在计算机中,一般使用特定的 整数(编码)来表示特定的字符 ,比如最常见的 ASCII编码 就使用 97 来表示 'a' 字符

因此,char 也被认为是整数类型(事实上在技术层面看,char 存储的值确实是整数),因此当需要使用 8 位的整数时,常常会使用 char 来代替

1.1.3 _Bool

C99标准 添加了 _Bool 类型来表示布尔值,即逻辑值 true 和 false

在C语言中,值 0 表示 false,1 表示 true

原则上它仅占用 1 位存储空间 (一个位就可以表示 0 和 1 了)

1.1.4 float、double 

这两个类型是用于表示 浮点数 的,浮点类型能表示包括小数在内更大范围的数

浮点数 常用于表示科学计数法,该计数系统用于表示非常大或非常小的数

C标准 规定,float 类型必须至少能表示 6 位有效数字,且取值范围至少是 eq?10%5E%7B-37%7D%20~%2010%5E%7B+37%7D .

前一项规定指 float 类型 必须能够表示 33.333333 的前 6 位数字,而不是精确到小数后 6 位数字。后一项规定用于方便的表示 一些数学上的 非常大或非常小的数字(因为科学家们也常常使用C语言做一些计算)

一般,系统存储一个浮点数需要占用 32 位,1 位表示浮点数的符号,8 位表示浮点数的指数的值和符号,23位表示非指数部分(也叫 尾数 和 有效数)

一般 double 占用 64 位,C 标准要求它至少能表示 10 位有效数字(实际实现上,double 常常至少能表示 13 位有效数字)

1.1.5 复数 和 虚数类型

一般而言 复数 和 虚数 类型只作为可选项,是否实现则看系统(或用户)的需求(比如那些前面提到的科学家,毕竟在数学领域 C 语言也分到了一杯羹)

提及这个 数学上特殊的类型,只是为了让读者知道 C 有这样的特殊类型,这里将不作过多赘述

1.1.6 void

这个类型也是一个特殊类型 是 C90 标准添加的关键字,将在后面配合其他的知识点进行说明


1.3 数据类型的使用

数据类型通常有两种用法:一种是为一个变量声明它的存储类型,并为它开辟一块空间以供存储它的值;还有一种是 将某个类型的变量转换为另一个类型的变量。下面将只介绍第一种用法

下面是第一种用法的示范:

int a;
int b=0;

char c = 'a'; // 97 代表字符 a
char d = 97;

long e;
short f;

float g=3.14;
double h=3.1415;

unsigned int i=1; // 表示 无符号整型

上面的示范都是 变量的声明(有人常常会把 int a; 这样的语句称为声明语句,实际上变量的声明并不是语句,这是大多编译器都承认的事)像 a 这样的标识符我们称之为变量

注意上面的每个句子后面都跟了一个 ; ' 的标点符号,在 C 中,每一条句子的结尾都会使用英文字符分号 来表示句子的结束。因为 C 的句子格式并不要求 用一行代码来表示一个语句,因此在每个语句的后面都要加上 分号 来告诉编译器句子的结束。 注意是英文字符的分号

在上面的 第二行代码中,比第一行多了一个 类似于 赋值 的操作,事实上这样的操作称之为 初始化(initialization),也就是说 上面的 int b=0; 这一条语句 不仅声明了一个int 类型的变量,还给了它一个初始值。对于像 0 这样直接表示的数字,我们称之为 整型常量(整型也就是整数类型)

(这里需要注意,初始化和赋值是不一样的操作,虽然它们都用到了 '=' 赋值运算符)

在初始化 或 为char类型赋值一个字符时,都需要用 单引号 括起来  这样的字符我们称之为 字符常量

对于 float 等浮点数类型的使用与 整型相像,就不解释了。值得一说的是最后的 unsigned int i =0; unsigned 关键字表示 i 是一个 无符号的 int 类型的变量。也就是说 i 变量只能表示 大于等于0 的整数,那么如果给 i 一个负数会怎样?那么变量 i 会把它当成一个整数来存储(因为计算机的数值符号用二进制存储位的最高位来表示)


本章的内容暂时到这

笔者在这里提醒读者:如果你想成为一个优秀的 C程序员,那么对于基础概念是需要非常牢固的掌握你才能写出简洁且高效的 C语言代码,像上面我说的那个 【变量的声明不是一条语句】这样的概念,你或许会觉得我太小题大做了,或是觉得这样区分没有意义,实际上像这种基础的本质的概念对于一个 优秀的C程序员是非常重要的,因为只有更加地了解C语言的规则和本质,才能利用C语言的特性去写出发挥C语言特长的代码。因此这是非常重要的事,但是笔者这里想偷懒,写的东西不是很多,如果想知道更多的建议 买一本 《C Primer Plue》的书,或是找它的电子书(如果你能找到),里面干货多多,而且是业内公认的经典书籍。

---- 2024.9.1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值