(1)整数:没有小数部分的数。
(2)浮点数:有小数部分。
注意:计算机把浮点数分成小数部分和指数部分且分开进行存储;浮点数可以表示的范围比整数大;一些算术运算里浮点数损失的精度更多;浮点数通常只是实际值的近似值。
在printf()中的对应转换说明
(1.一般默认十进制,
2.只用小写)
八进制和十六进制的使用int可以是正整数、负整数、0;
C语言规定int类型不小于16位
int m;
signed int m;(一般不用特意强调说明,下同)
%d见表1short占用的存储空间可能比int少;
C语言规定short类型至少占16位
short m;
short int m;
%hd见表1long占用的存储空间可能比int多;
C语言规定long类型至少占32位
long m;
long int m;
%ld(%Ld)见表1long long占用的空间可能比long多;
long long类型至少占64位
long long m;
long long int m;
%lld(%LLd)见表1 表1 以八进制数144和十六进制数64为例的有符号整型转换表示 1440144(带前缀)640x64(带前缀)\0X64int%o%#o%x%#x、%#X(下略)short%ho%#ho%hx%#hxlong%lo%#lo%lx%#lxlong long%llo%#llo%llx%#llx无符号整型只用于非负值场合,可以表示更大的数。各关键字类型分类与声明与有符号整型类似。在printf()函数中的对应转换说明举例如下表(与有符号整型十进制int类型%d对应使用的是%u,其他进制略):
表2 十进制无符号转换说明 printf()中对应转换说明unsigned int%uunsigned short%huunsigned long%luunsigned long long%lluchar型
char类型实际上存储的是整数而不是字符,计算机使用ASCII编码处理字符,标准ASCII码的范围是0~127,C语言中char类型占用一个字节。用单引号括起来的单个字符被称为字符常量。char类型的标准声明和定义如下:
char m = 'T';
printf()函数用%c指明待打印的字符。
char类型除了打印字符'T'之外,也有非打印字符。单引号只适用于字符、数字、标点符号,而有些是ASCII字符打印不出来的,所以用一些特殊符号序列表示一些特殊字符,这些特殊符号序列成为转义序列。第二章接触到的换行符\n就属于转义序列。
注意:C语言将字符常量视为int类型而非char类型,char m = 65;这种定义方式也可以但不是一种好的编程风格。
关于char类型有无符号的问题视情况而定,若有符号,可表示的范围是-128~127;若无符号,可表示的范围是0~255;特别的,若只用char处理字符,则无需任何修饰符。
_Bool型
C99标准添加的类型,简而言之就是逻辑值true和false,用1表示true,0表示false。布尔类型属于整数类型,原则上仅占一位储存空间。在有些资料中并不把它算作C中的数据类型。
(1)float
可精确表示至少6位有效数字,浮点型常量后面跟f。
(2)double
能表示比float类型更多的有效数字(至少10位)和更大的指数。
(3)long double
能表示比double更多的有效数字和更大的指数,浮点型常量后跟L。
表3 在printf()中的对应转换说明 十进制指数记数法十六进制float%f%e