第2章 C语言的基本数据类型_第1页
第2章 C语言的基本数据类型_第2页
第2章 C语言的基本数据类型_第3页
第2章 C语言的基本数据类型_第4页
第2章 C语言的基本数据类型_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章C语言的基本数据类型

数据是程序的基本组成元素,是被处理的对象,在程序中起到纽带作用,它把C语言中的各个函数联系起来,相互配合完成某些功能。因而熟练地掌握数据类型的特点、常量和变量的使用方法,是进行程序编写的基础。本章将介绍C语言中的各种数据类型。通过本章的学习,使读者了解C语言常量与变量的含义,并掌握各种数据类型间的混合运算。

C语言数据类型

常量与变量

整型数据

实型数据

字符型数据

各类数值类型间的混合运算

2.1C语言数据类型

著名计算机科学家NikiklausWirth曾经提出了一个非常著名的公式:数据结构+算法=程序。可见在一个程序中必须存在以下两点:

(1)数据结构:是指程序中对数据的具体描述及数据的组织形式,它包括数据的类型和数据的组织形式。不同的计算机语言所允许定义和使用的数据结构是不同的,比如在C语言中提供的“结构体”数据结构,而在FORTRAN语言中就不支持这种数据结构。

W(2)算法:是指程序中具体的操作步骤,它处理的对象是数据,而数据是以某种特定的形式存在(如整数、实数、字符数等)于程序中,因而算法处理的对象实际上是各种不同的数据类型。

可以说算法是程序的灵魂,数据结构是程序的加工对象,在处理同一类问题时,如果数据结构不同,算法也不同。因而在考虑算法时,必须注意合理地选择数据结构。通常在处理复杂问题时,应当综合考虑数据结构和算法,选择最优的数据结构及算法。

在C语言中,数据结构通常是以数据类型的形式出现的,具体数据类型如图2.1.1所示。

图2.1.1C语言中的数据类型2.2常量与变量

常量和变量是C语言中的两种重要的数据组织形式。顾名思义,常量就是其值不能被改变的量;变量就是其值可以被任意改变的量。在C语言中,各类数据是计算机处理的主要对象,这些数据在计算机处理的过程中,就是以常量和变量的形式表达和存储的。

2.2.1常量和符号常量

在C语言中,把在程序运行过程中其值保持恒定不变的数据称为常量。根据类型的不同可以将常量分为以下4种:

(1)整型常量:是以整数形式存在的常量,如21,0,-21等。

(2)实型常量:是以浮点形式存在的常量,如2.6,-3.7等。

(3)字符常量:是以字符形式存在的常量,如‘a’,‘f’,‘x’等。

(4)字符串常量:是以字符串形式存在的常量,如‘student’,‘for’,‘int’等。

常量不仅可以直接表示,也可以用一个标识符来代替,这种用标识符代表的常量称为符号常量,该标识符其实就是常量的别名。符号常量的一般格式如下:

#define标识符字符串

例2.1编写一个求圆面积的程序,要求输入圆的半径,输出圆面积。

程序

#include<stdio.h>

#definePI3.14

main()

{

floatrad,area;

printf("Inputtheradiusoftheround:\n");

scanf("%f\n",&rad);

area=PI*rad*rad;

printf("Theareaoftheroundis");

printf("%f\n",area);

}

输入

Inputtheradiusoftheround:

12.54↙

输出

Theareaoftheroundis493.770020

#define表示宏定义命令,一般情况下符号常量名用大写,变量名用小写,以示区别,在程序中使用符号常量,具有以下优点:

(1)含义清楚。在定义符号常量时,可以按“见名知意”的原则为符号常量命名,这样在检查程序时可以很方便地分清常量的含义。比如可以用PI代表圆周率,用area表示面积等。

(2)修改方便。如果需要修改常量值时,只须在符号常量定义的位置修改即可,这样其值在整个程序中都将发生改变。

在C语言中,系统提供了一个测试某一种类型数据所占存储空间长度的运算符“sizeof”,其格式如下:

sizeof(类型表示符)

例如:利用运算符sizeof求整型int所占的内存空间。

sizeof(int);

2.2.2变量

变量就是在程序的运行过程中,其值可以根据需要经常更新的数据。变量可分为整型变量、实型变量、字符变量等。每个变量都必须具备4个基本要素,即变量名、变量值、变量对应的内存空间和变量的数据类型。

1.变量名

为了区分不同的变量,每个变量必须具有自己的名称,在对变量命名时应该遵循以下3点:

(1)变量名只能由字母、数字和下画线3种字符组成。

(2)数字不能作为第1个字符。

(3)英文大写字母和小写字母是不同的字符。

下面是合法的标识符和变量名:

num,day,mouth,year,max12,Student,_round等。

下面的则是不合法的标识符和变量名:

M.D.jack,¥1982,#86,@sohu,a>b,deng-lei等。

注意:在C语言中,英文大写字母和小写字母被认为是两个不同的字符,如num和NUM就是两个不同的变量名。一般情况下,变量名用小写字母表示,而符号常量名用大写字母表示。

2.变量的定义

常量在使用前可以不用定义,但是变量在使用前必须先定义。定义变量的实质就是在内存中为变量分配一定大小的空间。定义变量的一般形式如下:

<类型名><变量名>

例如:

intnum1,num2; /*定义整型变量num1,num2*/

floatf1,f2; /*定义浮点型变量f1,f2*/

charc1,c2; /*定义字符型变量c1,c2*/

3.变量的用法

为变量赋值的过程称为变量的初始化。一般情况下,变量初始化的方法有以下3种:

(1)定义变量的同时为其赋值。

例如:intnum=5;

(2)定义变量后再为其赋值。

例如:

floatpi;

pi=3.14; /*此处“=”表示赋值运算符*/

(3)同时定义多个变量并分别为它们赋值。

例如:intnum1=12;num2=14;num3=16;

2.3整型数据

在C语言中,用于表达和处理整数的数据称为整型数据。整型数据有整型常量和整型变量之分。

2.3.1整型常量

整型常量即整常量,在C语言中,整型常量可用以下3种形式表示:

(1)十进制整数:如1982,-86,0等。

(2)八进制整数:通常把以数字0开头的数称为八进制数,如0154,-0123等。

其中,(0154)8=1×82+5×81+4×80=(108)10

(-0123)8=-(1×82+2×81+3×80)=(-83)10

(3)十六进制整数:通常把以数字0x开头的数称为十六进制数,如0x154,-0x123等。

其中,

(0x154)16=1×162+5×161+4×160=(340)10

(-0x123)16=-(1×162+2×161+3×160)=(-291)10

例2.2整型常量3种形式的应用。

程序

#include<stdio.h>

main()

{

intnum1,num2,num3;

num1=125;

num2=0125;

num3=0x125;

printf("Thealgorismnumbersare");

printf("%d,%d,%d\n",num1,num2,num3); /*以十进制形式输出*/

printf("Theoctavonumbersare");

printf("%o,%o,%o\n",num1,num2,num3); /*以八进制形式输出*/

printf("Thehexnumbersare");

printf("%x,%x,%x\n",num1,num2,num3); /*以十六进制形式输出*/

}

输出

Thealgorismnumbersare125,85,293

Theoctavonumbersare175,125,445

Thehexnumbersare7d,55,125

分析

“%d”,“%o”,“%x”为格式转换控制符,分别用于输出十进制、八进制、十六进制整数。

2.3.2整型变量及分类

整型变量是用来存储整型数据的,数据在计算机内部是以二进制形式存放的,根据数据的表示范围可以将整型变量分为3种。

1.有符号与无符号基本整型变量

有符号基本整型变量一般是以signedint表示的,或直接表示为int,通常用到的都是有符号基本整型变量;无符号基本整型变量一般是以unsignedint表示的,或表示为unsigned,使用无符号整型变量是为了充分利用变量的表示范围,节约内存。无符号整型变量只能存放不带符号的整数,如123,456等,而不能存放负数,如-123,-456等。

2.有符号与无符号长整型变量

有符号长整型变量一般以signedlongint表示,或直接用long表示;无符号长整型变量一般以unsignedlongint表示,或直接用unsignedlong表示。

3.有符号与无符号短整型变量

有符号短整型变量一般以signedshortint表示,或直接用short表示;无符号长整型变量一般以unsignedshortint表示,或直接用unsignedshort表示。ANSI标准定义了整数数据的字节长度和数的取值范围,如表2.1所示。

其中,表中“[]”内的部分表示可以省略,不影响变量在内存中数的取值范围,如[signed][long][int]与long是等价的。

数据类型字节长度数的取值范围[signed]int2-32768~32767即-215~(215-1)unsigned[int]20~65535即0~(216-1)[signed]long[int]4-2147483648~2147483647即-231~(231-1)unsignedlong[int]40~4294967295即0~(232-1)[signed]short[int]2-32768~32767即-215~(215-1)unsignedshort[int]20~65535即0~(216-1)表2.1整型数据的字节长度和数的取值范围例2.3整型数据溢出的应用。

程序

#include<stdio.h>

main()

{

intnum1=32767,num2;

num2=num1+1;

printf("%d,%d\n",num1,num2);

}

输出

32767,-32768

分析

有符号基本整型变量int的范围是-32768~32767即215~(215-1),在上例中num1=32767,由于计算机只识别二进制数,因而将num1转换成二进制数。当num1+1后,其结果超出了有符号基本整型变量的范围,此情况称为数据溢出,当达到最大值后,就又从最小值开始计数,因而当32767加1后得不到32768,而得到有符号基本整型变量取值的最小值-32768,如图2.3.1所示。

num1:327670111111111111111num2:-327681000000000000000图2.3.1整型数据溢出2.4实型数据

在C语言中,用于表达和处理实数的数据称为实型数据。实型数据有实型常量和实型变量之分。

2.4.1实型常量

实型常量即实数,在C语言中又称为浮点数,实型常量可用以下两种形式表示:

(1)普通形式:一般用小数表示,书写时小数点不能省略。如3.14,.15,5.,0.0等,其中,0.0,0.和.0是等价的。

(2)指数形式:即科学计数法,在C语言中,指数的表示主要靠字母“e”或“E”来实现,e或E跟一个整数表示以10为底数的幂。如3.14e-2表示3.14×10-2即0.0314,5.14E3表示5.14×103即5140。值得注意的是C语言中规定字母“e”或“E”的前后都必须有数字,并且后面的数字必须为整数,如e5,e.,3.14e2.5等都是不合法的指数形式。

例2.4实型常量的应用。

程序

#include<stdio.h>

main()

{

floatx,y;

x=3.14e4;

y=3.14E-4;

printf("x=%f\n",x);

printf("y=%f\n",y);

}

输出

x=31400.000000

y=0.000314

2.4.2实型变量及分类

实型变量是用来存储实数数据的,在C语言中,可将实型变量分为单精度实型变量、双精度实型变量和长双精度实型变量3种,实型数据的字节长度和数的取值范围如表2.2所示。

表中的有效位表示数据在前几位之内是有效的,而其后的数字则是计算机的随机数。如单精度float数123456.789只能保证前7位数字的准确性。

表2.2实型数据的字节长度和数的取值范围数据类型字节长度有效位数的取值范围单精度float471e-38~1e+38双精度double8151e-308~1e+308长双精度longdouble16181e-4932~1e+4932例2.5实型变量的定义与应用。

程序

#include<stdio.h>

main()

{

floatx;

doubley;

x=123456.789;

y=123456.789;

printf("x=%f\n",x);

printf("y=%f\n",y);

}

输出

x=123456.789062

y=123456.789000

分析

从程序运行结果可以看出,x的值并不等于赋予的初值,而y的值等于赋予的初值。这是由不同数据类型变量的有效数字不同产生的差异。因而在需要定义较大的数时,应选取双精度double型,甚至选取长双精度longdouble型,以确保数据的准确性。

2.5字符型数据

在C语言中,用于表达和处理字符的数据称为字符型数据。字符型数据有字符常量和字符变量之分。

2.5.1字符常量

字符型常量是一个用单撇号括起来的字符。如‘a’,‘A’,‘%’,‘@’等。在C语言中,除了以上形式的字符常量外,还允许某些特殊形式的字符常量存在,这些字符常量是一种“控制字符”,称为转义字符。在屏幕上不能显示,只能产生相应的功能操作,如转义字符‘\n’表示换行。C语言中常用的转义字符及其含义,如表2.3所示。

表2.3常用的转义字符及其含义字符形式含义ASCII\n换行,从当前位置移到下一行开头10\b退格,从当前位置移到前一列8\r回车,从当前位置移到本行开头13\t水平制表,从当前位置移到下一个tab位置9\f换页,从当前位置移到下页开头12\\反斜杠字符“\”92\'单撇号字符“'”39\''双撇号字符“''”34表中,“转义字符”的含义是将反斜杠“\”后面的字符转换成相应的意思。如‘\n’中的“n”,并不表示字母n,而是作为“换行”符;‘\f’中的“f”不表示字母f,而是作为“换页”符。除了表中的转义字符外,在C语言中还可以用“\”加上1~3位八进制数表示的ASCII码来表示,如“\101”表示字母A;“\012”表示换行符。此外还可以用“\”加上1~2位十六进制数来表示,如“x0c”表示换页符;“x0d”表示回车符等。

例2.6转义字符实例。

程序

#include<stdio.h>

main()

{

printf("\n");

printf("c\tprogram\n");

printf("c\t\bprogram\n");

}

输出

cprogram

cprogram

分析

程序中第1个输出语句是换行;第2个输出语句是在第1列,先输出字符“c”,然后跳到第9列输出字符串“program”;第3个输出语句是在第1列先输出字符“c”,然后跳到第9列准备输出,遇到一个退格控制符“\b”,回到第8列输出字符串“program”。

2.5.2字符变量及分类

字符变量是用来存储字符常量的,在内存中,一个字符占一个字节。在C语言中,可将字符变量分为有符号字符变量(char)和无符号字符变量(unsignedchar)。将一个字符常量存入字符变量中,实际是将该字符的ASCII码存入存储单元中,与整数的存储形式类似,因此一个字符数据既可以以字符形式输出,也可以以整数形式输出。字符数据的字节长度和数的取值范围如表2.4所示。

表2.4字符数据的字节长度和数的取值范围数据类型字节长度取值范围char1-128~127unsignedchar1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论