数据类型-常量与变量
前言
首先,在正式介绍常量与变量之前,我们需要声明C语言中正确的命名方法。
正如我们在给文件命名时所遵循的命名规则,我们在给C语言变量和常量命名时也需要遵循一定的规则。在变量中,我们称之为标识符(用来标识常量,变量,函数的字符序列)。
一般情况下,C语言命名有如下规则:
1)名称由字母,数字,下划线组成。
2)第一个(即开头)不能是数字。
3)C语言中大小写敏感。 //e.g.:A与a表示不同的变量/常量
4)不能使用关键字。
C语言中的关键字一部分如下:
| int | float | double | char | short | long | signed | unsigned |
|---|---|---|---|---|---|---|---|
| if | else | switch | case | default | for | while | do |
| break | continue | return | void | const | sizeof | struct | typedef |
| static | extern | auto | register | enum | goto | union | volatile |
| 另一部分为系统内置函数。 |
常量
常量的定义:在程序执行过程中,其值不发生改变的量称为常量。
常量大致分为以下几类分类
1)符号常量
概念:用标识符代替常量。
语法:define 符号常量 常量
目的:为了使程序具有可拓展性与可移植性。
样例:#define PI 3.1415926 //我们把圆周率用PI替换,在程序中需要使用圆周率时,我们不需要一个一个的键入3.1415926……而是用一个PI代替之
2)直接常量
概念:用标识符存储常用数据类型常量。
语法:数据类型 常量名 常量值
分类:
整型常量:
//注:C语言中,整型常量可用后缀字母'l'和'L'表示长整型,在32位机器中。长整型与普通型没有区别,都占用4个字节。
十进制:由 0~9 与+/-组成,十进制常量没有前缀,数值为 0~9
八进制:由0开头,后面为0~7组成,通常是无符号数。
十六进制:由ox开头,后面为 0~9 和 a~f 组成
//备注:你知道你的QQ号电脑可以用十六进制登录吗?想要一个帅气的QQ登录界面吗,快把QQ转换为十六进制吧!别忘记了加0x哦。
实型常量://只采用十进制表示形式。
//注:实型常量后面可以加f或F表示实型常量。
小数形式:有数字0-9及小数点组成。
指数型:格式控制符为%e,后面我们会讲到,输出为科学计数法样式,(表示为a E n,a为十进制数,n为阶码)。默认为double型。
字符常量:
注意:字符常量与符号常量不一个概念。符号常量用来替换后面的常量表达式,后面可以跟函数。字符常量为一个数据类型,格式控制符为%c,用来存储一个字符,例如'a'。
概念:单引号括起来的单个普通字符或者转义字符
特点:
1)字符常量只能用单引号括起来,不能使用双引号或者其他括号。
2)字符串常量只能是单个字符,不能是字符串。
3)字符可以是字符集中任意字符,但数字被定义为字符型后就不能以原数值参与数值运算。
ASICC表
样例: char a='a';
字符串常量:
C语言中字符串存储有两种形式:字符数组和字符指针(C++STL库中有一个string,不过C语言并没有这种数据类型)。
概念:字符串,顾名思义,即一串字符。在C语言中,用双引号括起来。
字符串常量的另一个特点为末尾自动加'\0'作为字符串的结束标志。
原因:字符串长度不固定。'\0'表示无意义。所以可以作为字符结束标志。
//注:在计算长度时,实际长度应该是字符的个数+1.
变量
定义:数据类型 变量1,……,变量n;
//例如:
int a;
int b;
或者
int a,b;
遵循先定义,后使用原则,位置一般放在开头。
为了理解变量的概念,我们先插入如下说法:
1、计算机要处理的数据(诸如数字、文字、符号、图形、音频、视频等)是以二进制的形式存放在内存中的;
2、我们将8个比特(Bit)称为一个字节(Byte),并将字节作为最小的可操作单元。
我们不妨举一个例子来说明一下:
生活中我们会找一个小箱子来存放物品,一来显得不那么凌乱,二来方便以后找到。计算机也是这个道理,我们需要先在内存中找一块区域,规定用它来存放整数,并起一个好记的名字,方便以后查找。
1)那么,C语言中这样在内存中找一块区域:
int a;//int即为:Integer的简写,意思是整数。a是我们给这块区域起的名字;
按照上面的例子:我们很好理解这句话的意思:在内存中找一块区域,命名为 a,用它来存放整数。
注意 int 和 a 之间是有空格的,它们是两个词。也注意最后的分号,int a表达了完整的意思,是一个语句,要用分号来结束。
不过int a;仅仅是在内存中找了一块可以保存整数的区域,那么如何将数字放进去呢?
2)C语言中这样向内存中放整数:
a=1314;
'='是一个新符号,在C语言中,这个过程叫做赋值(Assign)。赋值是指把数据放到内存的过程。
与之相对应的有一个叫做初始化的概念,即在定义的时候赋值,也就是在找到一个箱子的时候把东西放进去
int a=1314;
补充:
1)先定义变量,再初始化:
int a;
a=1314;
2)定义同时进行初始化:
int a=1314;
当然,a中的整数不是一成不变的,只要我们需要,随时可以更改。
更改的方式就是再次赋值,例如:
int a=1314;
a=521;
第二次赋值,会把第一次的数据覆盖(擦除)掉,也就是说,a 中最后的值是521.
因为a的值可以改变,所以我们给它起了一个形象的名字,叫做变量(Variable)
数据类型
数据是放在内存中的,变量是给这块内存起的名字,有了变量就可以找到并使用这份数据。
在C语言中,int 有一个专业的称呼,叫做数据类型(Data Type)。
顾名思义,数据类型用来说明数据的类型,确定了数据的解释方式,让计算机和程序员不会产生歧义。在C语言中,有多种数据类型,我们常用的数据类型有以下几种:
| 说 明 | 字符型 | 短整型 | 整型 | 长整型 | 单精度浮点型 | 双精度浮点型 | 无类型 |
|---|---|---|---|---|---|---|---|
| 数据类型 | char | short | int | long | float | double | void |
上述的是基本数据类型,其次,C语言中还包含指针类型,空类型(void),文件类型(file),构造结构(数组,结构体[struct],联合体[unio]).其他的我们会在回来的学习中接触并使用,现在我们只需了解有这些类型就可以。
关于float,double等实型变量的存储方式,会在后面作出详细解释。
数据长度
所谓数据长度(Length),是指数据占用多少个字节。占用的字节越多,能存储的数据就越多,对于数字来说,值就会更大,反之能存储的数据就有限。多个数据在内存中是连续存储的,彼此之间没有明显的界限,如果不明确指明数据的长度,计算机就不知道何时存取结束。例如我们保存了一个整数 1000,它占用4个字节的内存,而读取时却认为它占用3个字节或5个字节,这显然是不正确的。所以,在定义变量时还要指明数据的长度。而这恰恰是数据类型的另外一个作用。数据类型除了指明数据的解释方式,还指明了数据的长度。因为在C语言中,每一种数据类型所占用的字节数都是固定的,知道了数据类型,也就知道了数据的长度。
在32位环境中,各种数据类型的所占用的字节数一般如下:
| 说 明 | 字符型 | 短整型 | 整型 | 长整型 | 单精度浮点型 | 双精度浮点型 |
|---|---|---|---|---|---|---|
| 数据类型 | char | short | int | long | float | double |
| 长 度 | 1 | 2 | 4 | 4 | 4 | 8 |
其次,我们也可以使用sizeof()函数来求一个数据类型所占用的字节数。例如:sizeof(int)。
我们还需要明白一点,在编程中,存储整数的数据类型的大小关系为:short,int,long 为非递减顺序。
即\(short\leqslant int\leqslant long\)
最后:数据类型只在定义变量时指明,而且必须指明;使用变量时无需再指明,因为此时的数据类型已经确定了。

浙公网安备 33010602011771号