C语言的数据类型和运算
第二章 C语言的数据类型和运算
2.1 数据类型
数据是计算机加工处理的对象,C语言中的数据包括:常量、变量和有返回值的函数。为存储和处理的需要,将数据划分为不同的类型,编译程序为不同的类型分配不同大小的存储空间(存储单元的字节数),并对各种类型规定了该类型能进行的运算(运算符集),任何类型数据的值均被限制在一定的范围内,称为数据类型的值域(取值范围)。
2.1.1 C的数据类型
说明: ● 构造类型是由基本类型按一定的规律构造而成的。
空类型的作用:①表示函数没有返回值;
②说明函数无参数;
③表示指针不指向任何值。
2.1.2 数值型数据的表示与存储形式
如π的表示: 日常表示 C语言中的表示
小数点的位置是浮动的,称为浮点数形式。在计算机内部实数都以浮点形式存储,如float占4个字节,三个字节存数字部分,一个字节存指数部分。
小数点的位置是固定的,称为定点数,如:3.14159 ,10,-20, 1992显然整数都属于定点数,如:整数10,在计算机内部一般占2个字节。
定点数的小数点一般是在最高位(定点小数)或在最低位(定点整数)。对于实数型定点数如:3.14159,C语言则把它按指数形式存放3.14159e0,即C的实数一律以浮点形式存储。
字符型数据的表示和存储形式
字符型数如:(’a’,’A’,’#’,’3’)在内存中以相应的ASCII代码存放(占一个字节),如’a’的ASCII代码为97,存储形式为:
在C中,ASCII代码值可以被看成整数,如’A’+32为97与’a’等价。
2.1.4 基本类型的名字和长度
下列关键字称为类型区分符:
char、 int、 short、 long、 signed 、unsigned 、float、double
类型区分符代表一个基本类型的名字,用来说明一个数据的类型。
表2.1 基本类型的名字和长度
完整的类型名简单的类型名类型的长度(字节)取值范围char char 1有符号:-128~127
无符号:0~255signed charsigned char1-128~127Unsigned charUnsigned char10~255int int 2或4(与具体机器有关)2字节:-32768~32767
4字节:约-21亿~21亿short intshort2-32768~32767long intlong4约-21亿~21亿signed int signed2或4 (同int)同intUnsigned intunsigned2或 4(同int)2字节:0~65535
4字节:约0~42亿signed short int signed shor2-32768~32767Unsigned short intunsigned short20~65535singed long int signed long 4约-21亿~21亿Unsigned long intunsinged long4约0~42亿float float4 绝对值约
13.4e-38~13.4e+38double double8绝对值约:
1.7e-308~1.7e+308long doublelong double>=8由具体实现定义说明:
①signed和unsigned不能同时修饰char,short和long或signed和unsigned不能同时修饰int。float不能使用任何修饰词,double可用long修饰;
②int的长度与具体机器的字长相同,在16位机上为2字节,在32位机上为4字节。因此,int 的长度与short或long 相同。
③signed char用1个字节的低7位表示字符值,最高位表示符号。
unsigned char用整个字节表示字符值,无符号位。char表示有符号和无符号与具体机器系统有关,但char一定和signed char或unsigned char其中之一同。在多数机器系统中,char与signed char同。
④浮点类型的范围与浮点在机器内的表示有关,标准C没有规定浮点数格式,大多数机器浮点数格式为:
对于4个字节浮点数,阶码占8位,尾数占23位,1位符号位:
对于8字节的浮点数:
在浮点数中尾数位决定精度(有效数字位数),阶码决定取值范围。
⑤对于带符号的数据类型,一般用最高位(左边第1位)表示符号,0表示正,1表示负,数值以补码形式存放(一个正数的补码是该数的二进制数),如(10)补为