C程序设计程序设计入门、数据类型和运算(3)

2019-04-02 14:38

2 数据类型和运算

2.1 数据类型

2.1.1 程序引例

【例2.1】已知一个圆的半径,求这个圆的周长和面积。 (1)分析:

如果用r代表圆的半径,用g代表圆的周长,用s代表圆的面积,用PI代表圆周率π,圆的周长公式是g=2πr,面积公式是s=πr2。在这两个公式里,PI是圆周率,固定不变的,而半径是可变的,则圆的周长与圆的面积也是可变的,这些元素如何在C语言里进行说明并表示出来?

(2)程序源码: #include \#define PI 3.14 void main() { int r=1; float g,s; g=2*PI*r; s=PI*r*r;

printf(\}

图2-1 例2.1运行结果

运行结果如图2-1所示。由图中可以看到,r的值为整数1,而g,s为小数形式,也就是说,r与g,s是不同的数据类型。没有无类型的数据,C语言的数据类型如图2-2所示。

11

短整型(short) 整型 整型(int) 长整型(long) 基本类型

实型(浮点型) 字符类型(char) 数组类型

构造类型

指针类型 结构体类型(struct) 共用体类型(union) 枚举类型(enum)

空类型(void)

图2-2 C语言的数据类型

单精度型(float) 双精度型(double)

C语言的基本类型有三种:字符型、整型和实型(浮点型)。C语言的基本类型修饰符有四种:singed(有符号)、unsigned(无符号)、long(长型符)、short(短型符),这些类型修饰符可以与字符型或整型数据配合使用。基本数据类型和取值范围如表2-1所示:

表2-1 C语言常用基本数据类型描述

类型 char int float double 说明 字符型 整型 单精度实型 双精度实型 内存单元个数 1字节 4字节 4字节 8字节 8取值范围 即0~(2-1) 即-2~(2-1) -3.4E+38~3.4E+38 -1.7E+308~1.7E+308 3131说明:C语言中,整型数据的取值范围随着程序编译系统的不同而不同。本书以C-Free 3.5作为程序调试环境。

2.1.2 标识符和关键字

所谓标识符是指用来标识程序中用到的变量名、函数名、类型名、数组名、文件名以及符号常量名等有效字符序列。

在C语言中,标识符的命名规则是:由字母(大小写皆可)、数字及下划线组成,且第一个字符必须是字母或下划线。

由上述的标识符命名规则可知,下面的标识符名是合法的: year、_123、Int

而下面的标识符是非法的: #123、float、1_2 所谓关键字(保留字),它也是C语言的一种标识符,它用来命名C语言程序中的语句、数据类型和变量属性等。每个关键字都有固有的含义,不能另做其他用途,C语言中所有关键字都使用小写字母来表示。

12

2.1.3 常量

常量(常数),是指在程序运行过程中其值不可改变的量。C语言中的常量可分整型常量、实型常量和字符型常量。

(1)整型常量

整型常量又称为整数,在C语言中,整数可以用三种数制来表示: ① 十进制数常量 十进制整常量数没有前缀,其数码为0~9。

② 八进制整常量 八进制整常量必须以数字0开头,其数码取值范围为0~7。 ③ 十六进制数常数 十六进制数常数的前缀为0X 或0x。其数码取值范围为0~9、A~F或a~f。

(2)实型(浮点型)常量

实型常量也可称为实数或浮点数。在C语言中,实数采用十进制表示。它有两种形式: ① 十进制小数形式

小数形式是由数码0~9和小数点组成(注意:必须有小数点)。 ② 指数形式

指数形式又称科学计数法。其一般形式为:a E n (a表示十进制数,n表示指数),其数值为a×10n。

注意:指数表示形式中E或e前后必须有数字,E或e后面的数字必须是整数。 【例2.2】整型常量和实型常量的输出。 #include void main()

{ printf(“a=%d,b=%d,c=%d\\n”,38,017,0x20); printf(“p=%f,p=%e\\n”,123.456,123.456); }

第一个printf语句,以十进制形式输出用三种数制表示的整数,第二个printf语句,以小数形式和指数形式输出实数,运行结果如图2-3所示。

图2-3 例2.2运行结果

(3)字符型常量

字符常量是用单引号括起来的一个字符。例如:?A?、?a?等。 在C语言中,字符常量有以下特点: ①字符常量只能用单引号括起来,不能使用双引号或其他括号。单引号是字符常量的定界符,不是字符常量的一部分。

②字符常量只能存放一个字符,不能是多个字符。字符值是以ASCII码的形式存放在内存单元中。数字被定义为字符型之后就不能参与数值运算,也就是说?5?与5是不同的。

③转义字符

转义字符是一种特殊的字符常量。转义字符以反斜线“\\”开头,后面跟一个或几个字符。转义字符主要用来表示控制代码,例如“回车”,“换行”等。转义字符具有特定的含义,不同于字符原有的意义,所以称为“转义”字符。常用转义字符如表2-2所示。

13

表2-2 常用的转义字符及其功能

字符 \\0 \\n \\? \\” \\\\ \\ddd \\xhh 表示字符串结束 换行,将当前位置换到下一行的行首 单引号字符 双引号字符 反斜杠字符 1-3位八进制数表示的ASCII码所代表的字符 1-2为十六进制数表示的ASCII码所代表的字符 功能 ASCII码 0 10 39 34 92 0-255 0-255 表中最后两行是用ASCII码(八进制或十六进制)表示一个字符。例如:?\\101?或?\\x41?表示ASCII码为十进制数65的字符?A?。其中?\\101?中101是八进制,转换成十进制是65,而?\\x41?中x41是十六进制,转换成十进制也是65。

【例2.3】字符常量的输出。 #include main()

{ printf(“ch1=%c,ch2=%c\\n”, ?a?, ?b?); printf(“ch1=%d,ch2=%d\\n”, ?a?, ?b?);

printf(“ch3=%d,ch3=%c\\n”, ?\\101?, ?\\101?); }

运行结果如图2-4所示:

图2-4 例2.3运行结果

(4)字符串常量

字符串常量是用一对双引号括起来的字符序列。例如:”hello”、“”、“123”。字符串的长度等于字符串中包含的字符个数。例如:字符串“hello”的长度为5个字符。

字符串常量与字符常量是不同的,它们之间主要的区别有: ①字符常量使用单引号定界,字符串常量使用双引号来定界。

②字符常量只能是单个字符,字符串常量则可以包含一个或多个字符。

③可以把一个字符常量赋给一个字符变量,但不能把一个字符串常量赋予一个字符变量,在C语言中没有相应的字符串变量,可以用一个字符数组来存放一个字符串常量。

字符常量占一个字节的存储空间。字符串常量占的内存字节数等于字符串的长度加1,增加一个字节中存放字符?\\0?,用于标志字符串的结束。

字符常量?a?和字符串常量“a”,虽然都只有一个字符,但在内存中的情况是不同的。

?a? 在内存中占一个字节,可表示为: “a” 在内存中占两个字节,可表示为:

a a \\0 (5)符号常量

在C语言中,也可以用一个标识符来表示一个常量,称为符号常量。符号常量在使用

14

之前必须先定义,其一般形式为:#define 标识符 常量

如例2.1中,圆周率用PI表示,可写为:#define PI 3.14

其中“define”是关键字,前面加“#”,表示一条预处理命令(预处理命令都以“#”开头),称为宏定义命令。

该语句的功能是把标识符“PI”定义为其后的常量值3.14,定义后在程序中所有出现PI的地方均可以3.14来代替PI。符号常量的标识符是用户自己的定义的。

符号常量的特点:

①习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。 ②符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值。 ③使用符号常量的好处是:含义清楚,并且能做到“一改全改”。

2.1.4 变量

其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。变量定义必须放在变量使用之前。一般放在函数体的开头部分。要区分变量名和变量值两个概念。在例2.1中,圆的半径r值为1,则变量r在内存中的存储形式如下:

r 变量名

1 变量值 存储单元

C语言规定,所有变量在使用前必须先定义。

回顾例2.1中的两行程序代码:int r;和float s,l;

这两行代码功能是定义了一个整型变量r和两个浮点型变量s,l。其中int和float都是数据类型标识符,是C语言的关键字,用来说明变量的类型,而r,s,l是变量名。

(1)变量定义的格式:存储类型符 数据类型符 变量名表; 说明:

①存储类型符用来说明变量的存储类型,存储类型有自动类型(auto),寄存器类型(register),静态类型(static),外部类型(extern),默认为自动类型。如果未对存储类型做说明,则为自动类型。在例2.1中,变量定义语句都没有声明存储类型,所以都按自动类型处理。

②数据类型符用来说明变量的数据类型,它可以是C语言中任意一种基本数据类型。 ③变量名表中可以只有一个变量名,也可以有多个变量名,如果有多个变量名,各变量名之间用逗号分开。

(2)变量的赋值 定义变量后,在使用之前需要给变量一个初始值。在C语言中,可以通过赋值运算“=”给变量赋值。变量赋值的一般格式是:变量名=表达式;

变量的赋值一般有如下几种情况: ①先定义后赋值。 如: int r; r=1;

②在定义变量的同时为其赋值,称为变量的初始化。定义的变量可以全部初始化,也可以部分初始化。

例如,int r=1; 该语句即定义了整型变量r,同时为其赋初值为1。

变量在某一时刻只有一个确定的值,变量获得新值后,其原始值被覆盖。例如: int r;

15


C程序设计程序设计入门、数据类型和运算(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:蒙城县小涧镇旅游发展规划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: