C语言的基本数据类型及其表示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2C语言的基本数据类型及其表示
C语言的基本数据类型包括整型数据、实型数据和字符型数据,这些不同数据类型如何表示?如何使用?它们的数据范围是什么?下面我们分别进行介绍。
3.2.1常量与变量
1.常量
常量是指程序在运行时其值不能改变的量,它是C语言中使用的基本数据对
象之一。C语言提供的常量有:
以上是常量所具有的类型属性,这些类型决定了各种常量所占存储空间的大小和数的表示范围。在C程序中,常量是直接以自身的存在形式体现其值和类型,例如:123是一个整型常量,占两个存储字节,数的表示范围是-32768~32767;123.0是实型常量,占四个存储字节,数的表示范围是-3.410-38~3.41038。
需要注意的是,常量并不占内存,在程序运行时它作为操作对象直接出现在运算器的各种寄存器中。
2.符号常量
在C程序中,常量除了以自身的存在形式直接表示之外,还可以用标识符来表示常量。因为经常碰到这样的问题:常量本身是一个较长的字符序列,且在程序中重复出现,例如:取常数的值为3.1415927,如果在程序中多处出现,直接使用3.1415927的表示形式,势必会使编程工作显得繁琐,而且,当需要把的值修改为3.1415926536时,就必须逐个查找并修改,这样,会降低程序的可修改性和灵活性。因此,C语言中提供了一种符号常量,即用指定的标识符来表示某个常量,在程序中需要使用该常量时就可直接引用标识符。
C语言中用宏定义命令对符号常量进行定义,其定义形式如下:
#define标识符常量
其中#define是宏定义命令的专用定义符,标识符是对常量的命名,常量可以是前面介绍的几种类型常量中的任何一种。该使指定的标识符来代表指定的常量,这个被指定的标识符就称为符号常量。例如,在C程序中,要用PAI代表实型常量3.1415927,用W代表字符串常量"Windows98",可用下面两个宏定义命令:
#define PAI3.1415927
#define W"Windows98"
宏定义的功能是:在编译预处理时,将程序中宏定义(关于编译预处理和宏定义的概念详见9.10节)命令之后出现的所有符号常量用宏定义命令中对应的常量一一替代。例如,对于以上两个宏定义命令,编译程序时,编译系统首先将程序中除这两个宏定义命令之外的所有PAI替换为3.1415927,所有W替换为Windows98。因此,符号常量通常也被称为宏替换名。
习惯上人们把符号常量名用大写字母表示,而把变量名用小写字母表示。例3-1是符号常量的一个简单的应用。其中,PI为定义的符号常量,程序编译时,用3.1416替换所有的PI。
例3-1:已知圆半径r,求圆周长c和圆面积s的值。
#define PI3.1416
main()
{float r,c,s;
scanf("%d",&r);
c=2*PI*r;/*编译时用3.1416替换PI*/
s=PI*r*r;/*编译时用3.1416替换PI*/
printf("c=%6.2f,s=%6.2f\n",c,s);
}
3.变量
变量是程序设计语言中一个重要概念,它是指在程序运行时其值可以改变的量。这里所说的变量与数学中的变量是完全不同的概念。在C语言以及其他各种常规程序设计语言中,变量是表述数据存储的基本概念。我们知道,在计算机硬件的层次上,程序运行时数据的存储是靠内存储器、存储单元、存储地址等一系列相关机制实现,这些机制在程序语言中的反映就是变量的概念。
程序里的一个变量可以看成是一个存储数据的容器,它的功能就是可以存储数据。对变量的基本操作有两个:①向变量中存入数据值,这个操作被称作给变量"赋值"。②取得变量当前值,以便在程序运行过程中使用,这个操作称为"取值"。变量具有保持值的性质,也就是说:如果在某个时刻给某变量赋了一个值,此后使用这个变量时,每次得到的将总是这个值。
因为要对变量进行"赋值"和"取值"操作,所以程序里的每个变量都要有一个变量名,程序是通过变量名来使用变量的。在C语言中,变量名是作为变量的标识,其命名规则符合标识符的所有规定。以下是合法的变量名:f1total name_1_sum ave1r123
stu_12_1stu_name x1x1_pi year
C语言提供的基本变量类型有:
C语言要求:程序里使用的每个变量都必须首先定义,也就是说,首先需要声明一个变量的存在,然后才能够使用它。要定义一个变量需要提供两方面的信息:变量的名字和它的类型,其目的是由变量的类型决定变量的存贮结构,以便使C语言的编译程序为所定义的变量分配存储空间。
4.变量的定义
变量是以标识符的形式来表示其类型。在C语言中,是用类型说明语句对变量进行定义,其定义形式如下:
类型说明符变量名表;
其中,类型说明符是C语言中的一个有效的数据类型,如整型类型说明符int, 字符型类型说明符char等。变量表的形式是:变量名1,变量名2,……,变量名n,即:用逗号分隔的变量名的集合。最后用一个分号结束定义。定义变量的这种语言结构称为"变量说明",例如下面是某程序中的变量说明:
int a,b,c;/*说明a,b,c为整型变量*/
char cc;/*说明cc为字符变量*/
double x,y;/*说明x,y为双精度实型变量*/
可见,一个定义中可以说明多个变量。而且,由于C语言是自由格式语言,把多个变量说明写在同一行也是允许的。但是为了程序清晰,人们一般不采用这种写法,尤其是初学者。在C程序中,除了不能用关键字做变量名外,可以用任何标识符做变量名。但是,一般提倡用能说明变量用途的有意义的名字为变量命名,因为这样的名字对读程序的人有一定提示作用,有助于提高程序的可读性,尤其是当程序比较大,程序中的变量比较多时,这一点就显得尤其重要。这就是结构化程序设计所强调的编程风格问题。在数学里人们常常采取对变量简单命名的方式,那是因为数学公式里使用的变量通常都很少。程序的情况则不同,一个大程序里可能有成百成千的变量,命名问题就显得重要。
整型数据及其表示
1.整数类型
C语言提供了多种整数类型,用以适应不同情况的需要。常用的整数类型有:整型、长整型、无符号整型和无符号长整型等四种基本类型。不同类型的差别就在于采用不同位数的二进制编码方式,所以就要占用不同的存储空间,就会有不同的数值表示范围。表3-1列出了常用的基本整数类型和有关数据。
在数学中,整数是一个无限的集合,即整数的表示范围为-∞~+∞。C语言标准本身也并不限制各种类型数据所占的存储字节数。但在计算机中,所有数值的取值范围受限于机器所能表示的范围,不同的计算机系统对数数据的存储有具体的规定。表3-1列出了IBM PC机及其兼容机上对C语言整型数的规定,表中的存储字节数和最小数值范围表示相应类型的整数不能低于此值但可高于此值。表3-1整数基本类型表
整数类型存储字节最小数值范围
整型2字节-32768~32767
长整型4字节-2147483648~2147483647
无符号整型2字节0~65535
无符号长整型4字节0~4294967295
计算机内部总是采用二进制补码形式表示一个数值型数据,所以对于带符号的数,其负数的表示范围比正数大,请读者注意这一点。表3-2中的整型和长整型均表示带符号的整型数据,一个带符号整数和无符号整数在计算机中的存储形式是不同的,其示意图如图3-1所示。例如,长整型不可少于四个字节,但可以是八个字节。