C语言中数据类型的相关定义与用法
数据类型
数据有各种类别:数字、文字等,同样类别的数据也有大小之分,1个Byte不能满足这多样的需求。 对需求相同的数据分为一类,分配相同的字节空间用于存储。
所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。 不同的类型分配不同的长度和存储形式。
1.整形
通过类型定义符,可以定义一个整数类型的变量,方法如下:
类型定义符 标识符;
int mum;
在内存中使用4个字节的空间来保存整数数据,这个空间使用名称mum来标识
(1)只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加。
(2)对无符号整型数据用"%u"格式输出。%u表示用无符号十进制数的格式输出。在将一个变量定义为无符号整型后,不应向它赋予一个负值,否则会得到错误的结果
2.浮点型
由于小数点位置可以浮动,所以实数的指数形式成为浮点数。
浮点数类型包括float(单精度浮点型),double(双精度浮点型),long double(长双精度浮点型)。
由于用二进制形式表示一个实数以及存储单元的长度是有限的,因此不可能得到完全精确的值,只能存储成有限的精确度。小数部分占的位(bit)数愈多, 数的有效数字愈多,精度也就愈高。指数部分占的位数越多,则能表示的数值范围愈大。
两种表示方法:
(1)十进制小数形式:由数字和小数点组成: 例如:3.14, 4., .4,.0 , 0.
(2)指数形式:“十进制小数或整数”+"e(或E)”+“十进制数整数”,e(或E)的两边必须有数。例如:3.5e-4表示3.5×10 ^-4
单精度浮点数类型小数点后有效的位数只有6位。双精度类型的有效数可以达到16位。
绝大多数C编译器都规定小数点后最多保留6位,其余部分四舍五入。
通过类型定义符,可以定义一个浮点数类型的变量,与定义整数变量的方法相同:
float fnum;
double dnum;
浮点类型变量也可以使用printf()函数,与整型变量不同的是:float的格式说明项为"%f",double的格式说明项为"%lf"
3.字符型
字符类型保存的是ASCLL码表中的字符。这个类型占用1个字节,也可以将字符类型看作1个占用1个字节的整数类型,及其表示整数数据的范围为0~255或-12~+127。
[signed] char 有符号字符型
[unsigned] char 无符号字符型
ASCLL字符集包括:
- 字母:大写英文字母A-Z,小写英文字母a-z
- 数字:0~9
- 专门符号:29个包括 !“ # & ‘ ()* ,- . / : ; < = > ? [ \ ] ^ _ ` { | } ~
- 空格符:空格、水平制表符(tab)、垂直制表符、换行、换页(form feed)
- 不能显示的字符:空(null字符(以’\0’表示)、警告(以’\a’表示)、退袼(以’\b’表示)、回车(以’\r’表示)等
在表示一个字符的时候,可以使用 ’ ’ 将字符括起来的形式,也可以直接使用ASCII中的编码值。
对于可输入字符可以使用键盘的方式输入,也可以在屏幕上显示。但是控制字符没有输入的方式,甚至没有办法显示到屏幕上。为此,c语言提供了另外一种表示字符的方法,即转义字符。
转义字符是以反斜杠“\”引导的特殊字符常量表示。
比如n表示字母表中的字母n,转义字符\n表示的则是换行符,控制文本换行。
\ddd
3位8进制数表示的ASCLL码对应的字符
\xhh
2位16进制数表示的ASCLL码对应的字符
转义字符:‘\x41’ , ‘\101’
16进制41等于65
8进制101等于65
值为65的ASCII码是’A’
使用转义字符时,还需要注意以下几点:
- 转义字符中只能使用小写字母,每个转义字符看作一个字符。
- 转义字符’\v’,与’\f’,不影响屏幕输出,它们仅影响打印机的打印输出。
- 在C语言中,不可打印的字符都使用转义字符表示。
字符类型的存储:
字符数据在内存中的存储形式:以二进制的ASCLL码形式存储。
字符数据在内存中存储的是字符的ASCLL码的值,是一个无符号整数,其形式与整数的存储形式一样,所以C语言允许字符型数据与整型数据之间通用。
所以,一个字符型数据,既可以字符形式输出,也可以形式输出。
字符变量可以用一个字符为其赋值,也可以使用字符在ASCLL码表中的编码值为其赋值,甚至这个编码值可以是16进制和8进制。
输出字符变量时,printf()
函数需要使用格式控制符%c。
4.标识符
标识符是有效字符序列,是一个对象的名字。用于标识用户自己定义的变量、符号常量、函数名、数组名、类型名等。
上文中的整型变量num、浮点型变量 fnum等,均为用户定义的标识符。
命名规则如下
- 不能是关键字。
- 只能由字母、数字和下划线组成,且区分字母大小写。
- 名称的第1个字符必须是字母或者下划线,不能是数字。
- 名称中间不能有空格。
- 标识符可以为任意长度,但最好不要超过31个字符。
- 不要与C语言库函数名称相同。
关键字〈keyword)又叫保留字。他们是C语言预先定义好的字符序列,具有特殊的含义和用法,使用者不能将其作为标识符(见标识符命名规则)。ANSIC中有32个关键字。