C语言的数据类型
数据类型包含两方面的内容:数据的表示和对数据加工的操作。数据的全部可能表示构成数据类型的值的集合。数据全部合理的操作构成数据类型的操作集合。
在C语言中,把整型、实型和字符型称为基本数据类型,又称整型和实型为数值型。为了描述更复杂的数据结构,C语言还有构造类型、指针类型、放举类型和空类型。
构造类型是指由若干个相关的数据组合在一起形成的一种复杂数据类型。
1.整型
整型数据按其存储在内存中的二进位信息的最高位是当作数值信息位还是当作数据的符号位,将整型数据分成带符号整型和无符号整型两种。每种整型又按所需的字节个数的多少分成三种。
所以整型共有6种:
带符号整型(int)、带符号短整型(short int)、带符号长整型(long int,或 long)、无符号整型(unsigned int)、无符号短整型(unsigned short int)以无符号长整型(unsigned long)。
2.实型
实型数据有表示范围和精度两个不同的特征,为了适应数的范围和精度的不同要求,实型数据分三种类型:单精度型(也称浮点型 float)、双精度型(double)、长双精度型(long double)。
3.构造类型
构造类型是指由若干个相关的数据组合在一起形成的一种复杂数据类型,构造数据类型的成分数据可以是基本数据类型的,也可以是别的构造类型的。
按构造方式和构造要求区分,构造类型主要有数组类型、结构类型和共用类型。数组类型是由相同类型的数据组成;结构类型可以由不同类型的数据组成;当不同数据类型不会同时使用时,以节约内存,让不同数据占用同一区域,这就是共用类型。
4.指针类型
指针类型是取程序对象(如变量)在内存中占居的地址为值的一种特殊的数据类型。
5.枚举类型
当变量只取很少几种可能的值,并分别用标识符对值命名时,这种变量的数据类型可用枚举类型来表示。如变量表示一个星期中的某一天,就可用校举类型描述该变量的类型,并以星期见的英文名对日期命名,对应的变量取某日的星期名称为其值。
6.void类型
用保留字VOid表示的数据类型有两种完全相反的意思,或表示没有数据(没有结果、没有形式参数),或表示某种任意类型的数据(如又与指针结合,用 void。
标记)。 void表示空类型,void。表示任意数据的指针类型,程序如要使用 void。类型的数据,应该将它强制地转换成某种具体的指针类型。
2。2 常量
常量是指程序运行过程中其值不可改变的数据。常量按其值的表现形式可分为如下类型:整型常量、实型常量、字符型常量、字符串常量和指针常量。
1.整型常量
C语言整型常量的书写形式有三种:
(1)十进制整数。通常整数的写法,如0,123,-45,+25。
(2)八进制整数。以数字符0开头并由数字符0-7组成的数字符序列,为八进制整数。如 0123表示八进制整数,其值等于十进制整数 l*8*8+2*8+3=83。
(3)十六进制整数。十六进制整数以OX(或OX)开头的整数。表示十六进制数的数字将有16个,它们分别是0-9和A、B、C、D、E、F,其中六个英文字母也可以小写。例如,0x123表示十六进制整数,其值等于十进制整数1*16*16+2*16+3=291; oxabc,其值等于10*16*16+11+16+12=2748。
整型常量也可在整数之后接上字母L(或l),特别指明它是 long型的。
整型常量也可在整数之后接上字母U(或u),特别指明是不带符号的,即是unsigned型的。为指明不带符号的long型整型常量,则需在整数之后同时加上字母U和L,表明该整型常量是unsigned long型的。
整型数据以二进制形式存放,要求短整型数据的字节数不能大于整型数据的字节数;整型数据的字节数不能大于长整型数据的字节数。对于带符号的整数,用二进制代码的最左二进位作为数的符号,1表示负数,0表示正数。
2.实型常量
C语言实型常量的一般书写格式是:
正负号 整数部分.小数部分 指数部分
其中,正负号可有可无,无正负号即为正实数;整数部分和小数部分都是十进数字符序列;指数部分是e(或E)后接上正负号(正号可有可无)和十进数字符序列。
按上述格式书写实型常量,另有两条限制:
(l)整数部分和小数部分可以任选,但不可同时都没有。
(2)小数点和指数部分不可以同时都没有。
ANSIC引入两个后缀字符,用 f标识 float型实型常量,用 1(或 L)标识 fong double型实型常量,而无后缀符的实型常量被认为是double型的实型常量。
要注意实型常量的有效位数,不要以为写上的数字都能被计算机所接受。在大多数C系统中,一个float型实型数据在内存中占用4个字节(32个二进位),约7个十进位有效数字,能表示绝对值最接近0的实数约为10的-38次方,最大的实数约为10的38次方。
例如,对于代码 float x=123456。123f,在大多数系统中,实型常量123456。123f的最后两位数字是无效的。
double型实型数据占用8个字节(64个二进位),约15个十进位有效数字,能表示绝对值最接近0的实数约为10的一308次方,最大的实数约为10的308次方。
3.字符常量
字符型数据用于表示一个字符值,但字符型数据的内部表示是字符的ASCll代码(8位二进位的二进制形式)。字符型数据的类型符用char来标记。字符型常量的书写方法:
(l)普通字符--用单引号括起一个字符。如’a’、’b’、’B’、’$’。
(2)特殊字符--用’\字符或字符列采标记。这种标记方法有三种:
’\特定字符’,标记特定控制符,如换行符用’\ n’来标记。
’\ 1至3个人进制数字’,以人进数表示字符的ASCll代码。
’\ X1至2个十六进制数字符’,以十六进制数表示字符的 ASCll代码。
由于字符以代码存放,所以也可把字符值当作一个小整数。反之,一个小整数也可把它理解为是某个字符的代码,把它当作一个字符。
4.字符串常量
字符串常量用来表示一个字符序列,它的书写方法用双引号括住字符序列。例如:”ABC”、””等。字符串常量“”是一个空字符串,即不含任何有效字符的字符串。
字符串数据顺序存储字符串字符的ASCll代码,并在最后字符后面存储一个H进制代码全为0的特殊字符,用来标记字符串的结束。所以字符串常量“1234”在内存占5个字节,而空字符串只占一个字节。字符串中的字符也可以是转义字符。
5.符号常量
为了提高程序的可读性,常量可以用以下形式命名:
# define 标识符 常量
其中的标识符也称作符号常量,这里的常量是前面所述的某种常量、或是程序中前面定义的符号常量。
例如:
# define MAXN 100。
全部