C语言入门阶段:教你如何牢记C的基本数据类型

一、概述

C语言是普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,它具有自己独特的特点。为了更好地适应零基础的小伙伴学习C语言,小编打算从C语言基础、C语言进阶、C语言精通三个大的阶段开始做一些简单介绍,希望借此能增进大家对C语言的了解,提升学习效率,减少编程出错。

今天小编就开始从C语言的基本数据类型开始介绍。

C语言入门阶段:教你如何牢记C的基本数据类型

整数类型:

短整型(short,2B,-32768 - +32767)

整型(int,4B,-21.47亿 - +21.47亿)

长整型(long,4B,在32位操作系统上表数范围和int一样),后面加L或l。

//sizeof()运算符可以求一个变量,类型,常量等所占的存储空间。会执行括号中的计算,但是不会有结果。(也可以理解为没有执行)

有符型,为了区分正负,将第一位作为符号位,0表示正,1表示负。无符号类型(unsigned)表数范围的绝对值扩大两倍,只能表示非负整数,比如unsigned short表数范围为0-65535。

浮点类型:

单精度浮点型(float,4B,(-10^38 - -10^-38)和(10^-38 - 10^38))

双精度浮点型(double,8B,(-10^308 - -10^-308)和(10^-308 - 10^308))

存储:float最高位为符号位,接下来8位为指数位,最后23位为尾数位。后面加f或F。

字符数据类型

字符型(char,1B,-128 - +127),无符号字符型(unsigned char,1B,0 - 255) 

标识符,关键字,空白符(空格符、制表符、换行符)都属于字符型。 

用ASCII编码方案编码后储存,0-255个(有的系统会扩展)。

标识符(变量名,函数名,数组名,文件名,类型名)由字母、数字、下划线组成,数字不能开头。区分大小写。

关键字(Key Word):具有特俗意义的标识符,不能用于它用。

保留字(Reserved Word):系统暂时不使用,未来可能会使用的标识符,比如java中的goto。

特殊数据类型

空类型(void,不确定的数据类型,通常作为类型占位符)

原子类型和构造类型

原子类型:基本类型、指针类型、空类型。不可再分割。

构造类型:数组类型、结构体类型、共用体(结合体)类型。由基本类型构造而成。

C语言入门阶段:教你如何牢记C的基本数据类型

 short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。

二、内容

1、整型

整形分为整形常量和整形变量,常量就是我们平时所看到的准确的数字,例如:1、20、333、、、等等,变量则按我的理解是我像内存去申请一个存储空间,告诉内存空间我申请了这个地方用来存放一个整形的数据,但是什么时候放并没有直接确定。一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值范围是-2147483648~2147483647,在内存中的存储顺序是地位在前、高位在后,例如0x12345678在内存中的存储如下。

定义:用int关键字,举例如下:

C语言入门阶段:教你如何牢记C的基本数据类型

 在C语言中基本的整形变量标识符是int,在32位机器中一个int型数据使用32位也就是4个字节进行存储。

C语言入门阶段:教你如何牢记C的基本数据类型

2、浮点型

除了整形还有另一类很重要的基本数据类型,那就是实型。我们在学习数学时不仅使用整数,更多的时候则是使用小数,那么浮点数在内存中饭的存储与整数在内存中的存储有什么不一样的地方吗?其实,单从数据存储上看,都是2进制并没有任何不同,但不同的是我们加在其上的表示规则与读取规则。无论单精度还是双精度的浮点数在内存中我们对于一个浮点数都分为三个部分:

1、符号位:0代表正 1代表负;

2、指数位:用于存储科学技术法中的指数; 

3、尾数位:存储尾数部分

2.1 单精度

float:系统的基本浮点类型。至少能精确表示6位有效数字。

我们在C语言中使用一个float类型表示一个单精度的浮点类型,一个float类型占用4个字节的存储位,其中最高位为符号位,紧接着8位为指数位,剩下的23位为尾数位,我们使用%f作为其格式说明符,而且float一般精确到小数位后6位,即保证6位有效。

2.2 双精度

double:范围(可能)更大的浮点类型。能表示比float类型更多的有效数字以及更大的指数。 

long double:范围(可能)更大的浮点类型。能表示比double类型更多的有效数字以及更大的指数。我们在C语言中使用一个double类型表示一个双精度的浮点类型,一个double类型占用8个字节的存储位, 最高位为符号位,紧接着8位为指数位,剩下的52位为尾数位,我们使用%lf作为其格式说明符,而且double类型一般精确到小数位后12位,即保证12位有效。

3、字符型

字符型在其本质上就是整形,我们在C语言中使用char表示一个字符型,他占用一个字符的存储空间,字符型在存储时其内部存储的依旧是二进制数据,当我们读出时将会得到一个整形数据,而我们输出时会得到一个字符是因为我们人为的定义了一个对照表,这个表规定字符a的数值就是97,所以当我们遇到97时我们有两种读出方式,第一种以整数形式读出就是97,另一种就是以字符型读出,使用%c指定读出形式,则对照表则为a。

C语言入门阶段:教你如何牢记C的基本数据类型

4、指针

指针?什么是指针?从根本上看,指针是一个值为内存地址的变量(或数据对象)。正如char类型变量的值是字符,int类型的变量的值是整数,指针变量的值地址。在C语言中,指针有许多用法。假设一个指针变量名是ptr,可以编写如下语句:

C语言入门阶段:教你如何牢记C的基本数据类型

对于这条语句,我们就可以说ptr“指向”pooh。ptr和&pooh的区别是ptr是变量,而&pooh是常量。或者,ptr是可修改的左值,而&pooh是右值。还可以把ptr指向别处:ptr = &bah; //把ptr指向bah,而不是pooh。现在ptr的值是bah的地址。要创建指针变量,先要声明指针变量的类型。

5、 数组

数组是按照顺序存储的一系列类型相同的值,如10个char类型的字符或15个int类型的值。整个数组有一个数组名,通过整数下标访问数组中单独的项或元素。例如:以下声明:

float debts[20];声明debts是一个内容20个元素的数组,每个元素都可以存储float类型的值。数组的第一个元素是debts[0],第2个元素是debts[1],以此类推,直到debts[19]。注意,数组元素的编号从0开始,不是从1开始。可以给每个元素赋float类型的值。例如,可以这样写:debts[5] = 32.54;debts[6] = 1.2e + 21;实际上,使用数组元素和使用同类型的变量一样。例如,可以这样把值读入指定的元素中:

scanf("%f",&debts[4]);//把一个值读入数组的第5个元素这里要注意一个潜在的陷阱:考虑到影响执行的速度,C编译器不会检查数组的下标是否正确。下面的代码,其实都不正确:debts[20] = 88.32;//该数组元素不存在!debts[33] = 828.12;//该数组元素不存在!编译器不会查找这样的错误。当运行程序时,这会导致数据被放置在已被其他数据占用的地方,可能会破坏程序的结果甚至导致程序异常中断。

6 、复数和虚数类型(因为用的不多,所以这里几乎省略)

注意: char类型肯定是1字节,因为C把char类型的长度定义为1个字节。所以在char类型长为16位,double类型长为64位的系统中,sizeof将报告double类型有4字节长。

好了,简单的数据类型介绍我们就到这里了,希望能帮助大家理解、入门。笔记只是辅助,更多的还是需要大家跟着小编一起学习,互动交流。最后预祝小伙伴们学业有成!

C语言入门阶段:教你如何牢记C的基本数据类型