第2章 C语言的基本数据类型
本章要点
了解C语言的数据类型,掌握基本数据类型的应用及其相互转换规则,理解变量和常量的概念,并掌握其定义及引用方法。本章的难点是数据在内存中的存储形式。
第一节 C语言的数据类型
由于信息的表现形式多种多样,处理的方法也不相同,所以,我们必须考虑用不同形式的数据来表示不同的信息。例如:一个班级的人数要用整数来表示;班级学生的平均成绩要用小数表示;学生的姓名、性别要用字符来表示;一个班级学生某一门课程的成绩要用一组不同的数值来表示等。
计算机语言中的数据类型就是为了能够高效处理各种不同的数据而引进的一个概念,是指数据的内在表现形式。不同的数据类型具有不同的取值范围和不同的操作。C语言提供的数据类型如图2-1所示。
在程序中使用的所有数据都必须指定它的数据类型,C语言的数据类型由基本类型和非基本类型组成。其中,基本数据类型是其他数据类型的基础。
C语言中的基本数据类型包括整型、实型(浮点型)、字符型,其中实型又包括单精度和双精度两种类型。本章主要讨论这4种基本类型。
整型、单精度型、双精度型和字符型数据定义的关键字分别为:int、float、double和char。除了这四个关键字外,C语言中还提供了一些数据类型的修饰符,如:long、short、signed和unsigned。它们的作用是与基本类型的定义关键字结合起来使用,以对基本类型进行扩充,使得在程序编写的过程中可以灵活调整数值的范围以及所占用的存储空间。结合修饰符的应用,基本数据类型可进一步划分,如表2-1所示。
表2-1 各种数据类型及其说明
定义关键字说明占用字节数取值范围整型[signed] int整型4-231 ~ (231-1)unsigned [int]无符号整型40 ~ (232-1)[signed] short [int]短整型2-32768(-215)~32767(215-1)unsigned short [int]无符号短整型20 ~ 65535(216-1)[signed] long [int]长整形4-231 ~ (231-1)unsigned long [int]无符号长整形40 ~ (232-1)浮点型float单精度型4-3.4×10-38 ~ 3.4×1038double双精度型8-1.7×10-308 ~ 1.7×10308long double长双精度型8-1.7×10-308 ~ 1.7×10308字符型char字符型1-128 ~ 127unsigned char无符号字符型10 ~ 255signed char有符号字符型1-128 ~ 127说明:
(1)表中方括号内的部分是可以省略不写的。例如:unsigned short int与unsigned short是等价的。
(2)C标准并没有规定各种数据类型必须占用多少字节,通常只要求int型的长度应大于或等于short型,且应小于或等于long型。对于具体占用的字节数,不同的编译系统确定的长度也不相同。表2-1中各数据类型占用字节数以Visual C++ 6.0编译系统为例。
(3)实型数float和double总是有符号的,不能用unsigned来修饰。因此unsigned和signed只能修饰char和int,一般情况下,char和int默认为signed型。
(4)short只能修饰int,long只能修饰int和double。
(5)除了上表所列基本数据类型以外,在C99中,还增加了双长整型(long long int)和布尔型(bool)两种整型数据类型。
关于各种数据类型占用的字节数,在C语言中提供了一个长度运算符“sizeof”,该运算符可用来测定指定数据类型在当前编译系统中所占用的字节数。当我们需要了解某个编译系统中某种数据类型的宽度时,可以使用这个运算符进行测试。
其格式为:sizeof(类型标识符或数据)
例2.1 使用sizeof运算符测定Visual C++ 6.0编译系统中C语言各基本数据类型所占用的字节数。
#include
void main()
{
printf("int:%d B\n",sizeof(int));
printf("unsigned:%d B\n",sizeof(unsigned));
printf("short:%d B\n",sizeof(short));
printf("unsigned short:%d B\n",sizeof(unsigned short));
printf("long:%d B\