数据类型
所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的类型分配不同的长度和存储形式。
C语言允许使用的类型如图所示
整型数据
1.整型数据的分类
(1)基本整型(int型)
编译系统分配给int型数据2个字节或4个字节。在存储单元中的存储方式是:用整数的补码形式存放。如果是个负数,则应先求出负数的补码。
正整数的补码就是此数的二进制形式,5的补码:
负整数的补码是①将此数绝对值的二进制形式;②除最高位符号位外其他数
取反;③加1。
-5的补码:
(2)短整型(short int)
类型名为short int或short。如用Visual C++,编译系统分配给int数据4个字节,短整型2个字节。存储方式与int型相同。
(3)长整型(long int)
类型名为long或long int。如用Visual C++,编译系统分配给long int数据4个字节(即32位)。
(4)双长整型(long long int)
类型名为long long int或long long,一般分配8个字节。
2.整型变量的符号属性
说明: C标准没有具体规定各种类型数据所占用存储单元的长度,只要求
sizeof(short)≤sizeof(int)≤sizeof(long)≤sizeof(long long),具体由各编译系统自行决定的。
sizeof是测量类型或变量长度的运算符。
(1) 只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加。
(2) 对无符号整型数据用“%u”格式输出。%u表示用无符号十进制数的格式输出。
在将一个变量定义为无符号整型后,不应向它赋予一个负值,否则会得到错误的结果。
3.字符型数据
(1). 字符与字符代码
大多数系统采用ASCII字符集
字母: 大写英文字母A~Z,小写英文字母a~z
数字: 0~9
专门符号: 29个,包括
! " # & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ _ ` { | } ~
空格符: 空格、水平制表符(tab)、垂直制表符、换行、换页(form feed)
不能显示的字符: 空(null)字符(以'\0'表示)、警告(以'\a'表示)、退格(以'\b'表示)、回车(以'\r'
表示)等
注意: 字符′1′和整数1是不同的概念。
字符′1′只是代表一个形状为′1′的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字节。
00110001
而整数1是以整数存储方式(二进制补码方式)存储的,占2个或4个字节。
0000000000000001
整数运算1+1等于整数2,而字符′1′+′1′并不等于整数2或字符′2′。
(2)字符变量
字符变量:用类型符char定义字符变量。
char c='?';//定义c为字符型变量并使初值为字符′?′。′?′的ASCII代码是63,系统把整数63赋给变量c。
printf("%d %c\n",c,c);//用“%d”格式输出十进制整数63,用“%c”格式输出字符′?′
4.浮点型数据
浮点型数据用来表示具有小数点的实数。
3.14159=3.14159*100=0.314159*101=314.159*10-2
由于小数点位置可以浮动,所以实数的指数形式称为浮点数。
浮点数类型包括float(单精度浮点型)、double(双精度浮点型)、long double(长双精度浮点型)。
5.实型数据