C语言零基础入门——3.数据类型
这一节的主要任务是 讲解C语言的 数据类型 。
1. 数据类型
1.1 何为数据类型
数据类型,其实在我们生活中经常被使用,但是在编程语言中被重新定义了一下,并且加入了一些新的知识,然后就把人给搞懵逼了。
数据类型 = 一类数 + 这类数可以执行的操作。
其中的一类数:指的就是我们数学中的整数,小数等,但是在C语言中分别叫做整形数据,浮点数。当然,C语言不是全部使用数学中的数据类型 。
这类数可以执行的操作:指的是一个类型的数据可以执行哪些操作,比如:整形数据我们可以进行加减乘除,字符型数据却不可以。当然可以通过某种方法实现 。
总结: 对于编程语言来说数据类型就类似于数学中 对 不同的数 可以进行不同的处理一样。
1.2 数据类型的分类
1.2.1 数据类型分类的依据
一开始我们提到过,计算机只能处理0或者1,这也就是二进制的来源,无论我们输入到计算机的是什么东西(视频,图片 ,word...),都会经过软件的处理转换成0/1之后才能给计算机处理。
对于编程语言来说,许多数据都是人为设定的,我们输入这些数据到计算机中之后,如果我们事先不让计算机知道某一个数据的长度是多少,那么计算机就不知道应该处理多少个0/1组成的零一串的长度,于是就会产生错误。
因此,用不同数据类型在内存中占用的存储长度不同,将数据类型进行分类。
这样的好处就是,我们事先让计算机知道了这个数据是什么类型,并且由于每一个数据类型的长度(就是在计算机中的存储长度)都是固定好的,这样计算机处理的时候就会按照一定的长度去选数据。
1.2.2 计算机的存储特性
计算机的内存大概就是这个样子,大致的存储就是按照某一行(或者列)进行存放0/1,当某一行(或者列)放满之后就进行后续的行(列)。
内存中的每一个小格子就是可以存放一个0或者1。
但是如果我们用一个0/1做单位的话,太过于繁琐了,就好像我们数学中有个,十,百,千,万 等等的单位,一个0或1的单位就好像数学中的 个。 于是我们产生了一些更大的单位,对于计算机中:
一个0/1的叫做bit(也叫位),八个0/1叫做byte(也叫字节),于是就有了我们应该烂熟于心的一句话:一个字节等于八位 。为什么说这句话应该烂熟于心是因为,编程语言的数据类型 的数据长度就是以字节位单位的
1.2.3 常量与变量
计算机中数据有两种存在形式:常量 与 变量。具体区别见下程序:
#include <stdio.h>
#include <math.h>
void main(){
int r = 3;
float L = 0;
float S = 0;
L = 2 * 3.14 * r;
S = 3.14 * r * r;
printf("半径是%d , 的圆的周长是%f ,面积是%f \n",r,L,S);
}
常量 :说白了就是在程序中写死了的数据,不可以在改变了,比如上边的程序中的2 ,3.14 这些数据,除非修改源代码,不然就不会在改变了。
变量 :就是在程序执行过程中他的值可以改变的,就比如用L,S代替的周长与面积, 我们给他初始值都是0,但是经过计算后可以改变他们的值。
1.2.4 常用数据类型的分类
前面我们说了数据类型的分类是按照每个数据类型占多少字节进行分类的。于是我们可以得到以下的数据类型 仅列出常用的 :
注意:我们说的按照字节数分类指的是基本数据类型的分类。
- 整形数据 :占四个字节。
- 它使用 int 进行定义,比如:
int a = 3;
,意思就是定义了一个整形变量a,并且a的值为3 。
- 浮点型数据:(也就是我们在数学中说的小数)占四个字节。
它使用float进行定义,比如:
float L = 3.14;
,意思就是定义了一个浮点型变量L,并且L的值为3.14 ;注:之所以小数被叫做浮点型是因为,在计算机内部小数点也占用1bit的空间,并且运算的时候小数点会移动。
字符型数据:占一个字节。(字符型数据是指 大写字母A~Z,小写字母a~z,数字0~9,以及一些专门定义出来的 感叹号,#号,括号 等等)
世界上不是所有的字符都能被C语言识别,但是我们最常见的字符只要你能输入,就都能够被C语言识别,意思就是,字符在C语言中够用。它使用char进行定义,比如:
char a = '!';
,意思就是定义了一个字符型变量a,并且a的值为感叹号。注意:字符的定义需要用单引号括起来。
1.2.5 常用数据类型的扩展
以上常见的三种数据类型是我们较为常见的,针对以上的三种数据类型,各自又有着一定的拓展,大家应该明白,所谓的拓展,就是对存储长度的拓展。具体每一个类型的如下:
向左滑动
常用类型 | 拓展类型 | 字节数 | 备注 |
int (整形) | int (本身) | 4 | 本身用于对比 |
unsigned int | 4 | 无符号整形 | |
short | 2 | 短整形 | |
unsigned short | 2 | 无符号短整形 | |
long | 我不想下定论 | 长整型 | |
unsigned long | 我不想下定论 | 无符号长整型 | |
long long | 8 | 双长整型 | |
unsigned long long | 8 | 无符号双长整型 |
解释:
- int 占四个字节 ,但是他这四个字节中有一半是负数,一半是正数,因此可以表示 的数据大小是
-2 147 483 648 ~ 2 147 483 647
。 - unsigned int 也是占四个字节,但是他是没有符号的,因此可以表示的数据的大
小是int的2倍,他的数据范围是0 ~ 4 294 967 295
。 - short 占两个字节,他是有符号的。unsigned short与short不解释了哈。
- long占几个字节我也说不清,一般别用就好了(因为在32位操作系统中long与
short一样 ,64位操作系统中与int一样)。 - long long 很少用,不解释。
常用类型 | 拓展类型 | 字节数 | 有效数字 | 备注 |
float | float | 4 | 6 | 单精度浮点型 |
double | 8 | 15 | 双精度浮点型 |
解释
- 浮点型数据的有效数字是指:小数点前后的位数相加。
- 还有一个数据类型,不提了,因为也是长度不确定。
- double也很常用的。
常用类型 | 拓展类型 | 字节数 |
char | char | 1 |
unsigned char | 1 |
这个不解释了,能看懂吧。
1.3 数据的操作
我们一开始讲了 数据类型 = 一类数 + 这类数可以执行的操作。
以上内容讲解的是 一类数 的内容,至于操作的内容我们放到下一节的格式化输入输出进行讲解。
好了,这一节讲到这里,每次打算写的内容都会写不完 . . .