ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:46.75KB ,
资源ID:26895032      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26895032.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据类型运算符与表达式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据类型运算符与表达式.docx

1、数据类型运算符与表达式数据类型、运算符与表达式3.1 语言的数据类型 在第一章中,我们已经看到程序中使用的各种变量都应预先加以定义,即先定义,后使用。对变量的定义可以包括三个方面: 数据类型 存储类型 作用域 在本章中,我们只介绍数据类型的说明。其它说明在以后各章中陆续介绍。所谓数据类型是按被定义变量的性质,表示形式,占据存储空间的多少,构造特点来划分的。在语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。 1. 基本数据类型:基本数据类型最主要的特点是,其值不可以再分解为其它类型。也就是说,基本数据类型是自我说明的。 2. 构造数据类型:构造数据类型是根据已定义的一

2、个或多个数据类型用构造的方法来定义的。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员” 都是一个基本数据类型或又是一个构造类型。在 C 语言中,构造类型有以下几种: 数组类型 结构体类型 共用体(联合)类型 3. 指针类型:指针是一种特殊的,同时又是具有重要作用的数据类型。其值用来表示某个变量在内存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈。 4. 空类型:在调用函数值时,通常应向调用者返回一个函数值。这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以说明,例如在例题中给出的 max 函数定义中,函数头

3、为:int max(int a,int b);其中“int ”类型说明符即表示该函数的返回值为整型量。又如在例题中,使用了库函数 sin,由于系统规定其函数返回值为双精度浮点型,因此在赋值语句 s=sin (x);中,s 也必须是双精度浮点型,以便与 sin 函数的返回值一致。所以在说明部分,把 s 说明为双精度浮点型。但是,也有一类函数,调用后并不需要向调用者返回函数值,这种函数可以定义为“空类型”。其类型说明符为 void。在后面函数中还要详细介绍。 在本章中,我们先介绍基本数据类型中的整型、浮点型和字符型。其余类型在以后各章中陆续介绍。 3.2 常量与变量 对于基本数据类型量,按其取值是

4、否可改变又分为常量和变量两种。在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量。它们可与数据类型结合起来分类。例如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常量、枚举变量。在程序中,常量是可以不经说明而直接引用的,而变量则必须先定义后使用。 整型量包括整型常量、整型变量。 3.2.1 常量和符号常量 在程序执行过程中,其值不发生改变的量称为常量。 z 直接常量(字面常量): 整型常量:12、0、-3; 实型常量:4.6、-1.23; 字符常量:a、b。 z 标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。 z 符

5、号常量:用标示符代表一个常量。在语言中,可以用一个标识符来表示一个常量,称之为符号常量。 符号常量在使用之前必须先定义,其一般形式为: #define 标识符 常量 其中#define 也是一条预处理命令(预处理命令都以#开头),称为宏定义命令(在后面预处理程序中将进一步介绍),其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。 z 习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。 【例 3.1】符号常量的使用。 #define PRICE 30 Int main() int num,total; num=10; total=

6、num* PRICE; printf(“total=%d”,total);return 0; 用标识符代表一个常量,称为符号常量。 符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值。 使用符号常量的好处是: 含义清楚; 能做到“一改全改”。 3.2.2 变量 其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。变量定义必须放在变量使用之前。一般放在函数体的开头部分。要区分变量名和变量值是两个不同的概念。 a 变量名变量值 存储单元 3.3 整型数据 3.3.1 整型常量的表示方法 整型常量就是整常数。在语言中,使用的整常数有八进制、十六进制和十进制三种。

7、 1) 十进制整常数:十进制整常数没有前缀。其数码为 09。 以下各数是合法的十进制整常数: 237、-568、65535、1627; 以下各数不是合法的十进制整常数: 023 (不能有前导 0)、23D (含有非十进制数码)。 在程序中是根据前缀来区分各种进制数的。因此在书写常数时不要把前缀弄错造成结果正确。 2) 八进制整常数:八进制整常数必须以 0 开头,即以 0 作为八进制数的前缀。数码取值为 07。八进制数通常是无符号数。 以下各数是合法的八进制数: 015(十进制为 13)、0101(十进制为 65)、0177777(十进制为 65535);以下各数不是合法的八进制数: 256(无

8、前缀 0)、03A2(包含了非八进制数码)、-0127(出现了负号)。 3) 十六进制整常数:十六进制整常数的前缀为 0X 或 0x。其数码取值为 09,AF 或 af。 以下各数是合法的十六进制整常数: 0X2A(十进制为 42)、0XA0 (十进制为 160)、0XFFFF (十进制为 65535);以下各数不是合法的十六进制整常数: 5A (无前缀 0X)、0X3H (含有非十六进制数码)。 4) 整型常数的后缀:在 16 位字长的机器上,基本整型的长度也为 16 位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为 065535,有符号数为 -32768+32767。八进制无

9、符号数的表示范围为 00177777。十六进制无符号数的表示范围为 0X00XFFFF 或 0x00xFFFF。如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。 例如: 十进制长整常数: 158L (十进制为 158)、358000L (十进制为 358000);八进制长整常数: 012L (十进制为 10)、077L (十进制为 63)、0200000L (十进制为 65536);十六进制长整常数: 0X15L (十进制为 21)、0XA5L (十进制为 165)、0X10000L (十进制为 65536)。长整数 158L 和基本整常数 158

10、在数值上并无区别。但对 158L,因为是长整型量,编译系统将为它分配 4 个字节存储空间。而对 158,因为是基本整型,只分配 2 个字节的存储空间。因此在运算和输出格式上要予以注意,避免出错。 无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。 例如: 358u,0x38Au,235Lu 均为无符号数。 前缀,后缀可同时使用以表示各种类型的数。如 0XA5Lu 表示十六进制无符号长整数 A5,其十进制为 165。 3.3.2 整型变量 1. 整型数据在内存中的存放形式 如果定义了一个整型变量 i: int i; i=10; i 10 00 0 0 0 00000001010

11、数值是以补码表示的: 正数的补码和原码相同; 负数的补码:将该数的绝对值的二进制形式按位取反再加 1。 例如:求-10 的补码: 10 的原码: 00 0 0 0 00000001010 11 1 1 1 11111110101 取反: 再加 1,得-10 的补码: 11 1 1 1 11111110110 由此可知,左面的第一位是表示符号的。 2. 整型变量的分类 1) 基本型:类型说明符为 int,在内存中占 2 个字节。 2) 短整量:类型说明符为 short int 或 short。所占字节和取值范围均与基本型相同。 3) 长整型:类型说明符为 long int 或 long,在内存中

12、占 4 个字节。 4) 无符号型:类型说明符为 unsigned。 无符号型又可与上述三种类型匹配而构成: 无符号基本型:类型说明符为 unsigned int 或 unsigned。 无符号短整型:类型说明符为 unsigned short。 无符号长整型:类型说明符为 unsigned long。 (注意:这些在单片机编程中会用到,目的是节约内存)各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。 有符号整型变量:最大表示 32767 01 1 1 1 11111111111 无符号整型变量:最大表示 65535 11 1 1 1 11111

13、111111 下表列出了各类整型量所分配的内存字节数及数的表示范围。 类型说明符 数的范围 字节数int -3276832767 即-215(215-1) 2 unsigned int 065535 即 0(216-1) 2 short int -3276832767 即-215(215-1) 2 unsigned short int 065535 即 0(216-1) 2 long int -21474836482147483647 即-231(231-1) 4 unsigned long 04294967295 即 0(232-1) 4 以 13 为例: int 型: 00 00 00 0

14、0 00 00 11 01short int 型: 00 00 00 00 00 00 11 01long int 型: 00 00 00 00 00 00 00 000000000000001101unsigned int 型: 00 00 00 00 00 00 11 01unsigned short int 型: 00 00 00 00 00 00 11 01unsigned long int 型: 00 00 00 00 00 00 00 000000000000001101 3. 整型变量的定义变量定义的一般形式为:类型说明符 变量名标识符,变量名标识符,.; 例如: int a,b

15、,c; (a,b,c 为整型变量) long x,y; (x,y 为长整型变量) unsigned p,q; (p,q 为无符号整型变量) 在书写变量定义时,应注意以下几点: 允许在一个类型说明符后,定义多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。 最后一个变量名之后必须以“;”号结尾。 变量定义必须放在变量使用之前。一般放在函数体的开头部分。 【例 3.2】整型变量的定义与使用。 Int main() int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u;printf(“a+u=%d,b+u=%d

16、n”,c,d); return 0; 4. 整型数据的溢出 【例 3.3】整型数据的溢出。 Int main() int a,b; a=32767; b=a+1; printf(%d,%dn,a,b); return 0; 32767: 01 1 1 1 11111111111 -32768 10 0 0 0 00000000000 【例 3.4】int main() long x,y; int a,b,c,d; x=5; y=6; a=7; b=8; c=x+a; d=y+b; printf(c=x+a=%d,d=y+b=%dn,c,d); return 0; 从程序中可以看到:x, y 是

17、长整型变量,a, b 是基本整型变量。它们之间允许进行运算,运算结果为长整型。但 c,d 被定义为基本整型,因此最后结果为基本整型。本例说明,不同类型的量可以参与运算并相互赋值。其中的类型转换是由编译系统自动完成的。有关类型转换的规则将在以后介绍。 3.4 实型数据 3.4.1 实型常量的表示方法 实型也称为浮点型。实型常量也称为实数或者浮点数。在语言中,实数只采用十进制。它有二种形式:十进制小数形式,指数形式。 1) 十进制数形式:由数码 0 9 和小数点组成。 例如: 0.0、25.0、5.789、0.13、5.0、300.、-267.8230 等均为合法的实数。注意,必须有小数点。 2)

18、 指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。 其一般形式为: a E n(a 为十进制数,n 为十进制整数)其值为 a*10n。 如: 2.1E5 (等于 2.1*105) 3.7E-2 (等于 3.7*10-2) 0.5E7 (等于 0.5*107) -2.8E-2 (等于-2.8*10-2) 以下不是合法的实数: 345 (无小数点) E7 (阶码标志 E 之前无数字) -5 (无阶码标志) 53.-E3 (负号位置不对) 2.7E (无阶码) 标准允许浮点数使用后缀。后缀为“f”或“F”即表示该数为浮点数。如 356f 和 356.是等价的。【

19、例 3.5】说明了这种情况。 Int main() printf(%fn ,356.); printf(%fn ,356); printf(%fn ,356f); return 0; 3.4.2 实型变量 1. 实型数据在内存中的存放形式实型数据一般占 4 个字节(32 位)内存空间。按指数形式存储。实数 3.14159 在内存中的存放形式如下: +.314159 1 数符 小数部分 指数 z 小数部分占的位(bit)数愈多,数的有效数字愈多,精度愈高。 z 指数部分占的位数愈多,则能表示的数值范围愈大。 2. 实型变量的分类实型变量分为:单精度(float 型)、双精度(double 型)和

20、长双精度(long double 型)三类。 单精度型占 4 个字节(32 位)内存空间,其数值范围为 3.4E-383.4E+38,只能提供七位有效数字。双精度型占 8 个字节(64 位)内存空间,其数值范围为 1.7E-308 1.7E+308,可提供 16 位有效数字。 类型说明符 比特数(字节数)有效数字数的范围 float 32(4) 67 10-371038 double 64(8) 1516 10-30710308 long double 128(16) 1819 10-4931104932 实型变量定义的格式和书写规则与整型相同。 例如: float x,y; (x,y 为单精

21、度实型量) double a,b,c; (a,b,c 为双精度实型量) 3. 实型数据的舍入误差由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的。如下例。 【例 3.6】实型数据的舍入误差。Int main() float a,b; a=123456.789e5; b=a+20;printf(%fn,a);printf(%fn,b); return 0; 注意:1.0/3*3 的结果并不等于 1。 【例 3.7】 Int main() float a; double b; a=33333.33333; b=33333.33333333333333; printf(%fn%f

22、n,a,b); return 0; z 从本例可以看出,由于 a 是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。 z b 是双精度型,有效位为十六位。3.4.3 实型常数的类型 实型常数不分单、双精度,都按双精度 double 型处理。 3.5 字符型数据 字符型数据包括字符常量和字符变量。 3.5.1 字符常量 字符常量是用单引号括起来的一个字符。 例如: a、b、=、+、? 都是合法字符常量。 在语言中,字符常量有以下特点: 1) 字符常量只能用单引号括起来,不能用双引号或其它括号。 2) 字符常量只能是单个字符,不能是字符串。 3) 字符可以是字符集中任

23、意字符。但数字被定义为字符型之后就不能参与数值运算。如5和 5 是不同的。5是字符常量,不能参与运算。 3.5.2 转义字符 转义字符是一种特殊的字符常量。转义字符以反斜线开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,在前面各例题 printf 函数的格式串中用到的“n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。 常用的转义字符及其含义 转义字符 转义字符的意义 ASCII 代码 n 回车换行 10 t 横向跳到下一制表位置 9 b 退格 8 r 回车 13 f 走纸换页 12 反斜线符 9

24、2 单引号符 39 ” 双引号符 34 a 鸣铃 7 ddd 13 位八进制数所代表的字符 xhh 12 位十六进制数所代表的字符 广义地讲,语言字符集中的任何一个字符均可用转义字符来表示。表中的ddd 和xhh 正是为此而提出的。ddd 和 hh 分别为八进制和十六进制的 ASCII 代码。如101 表示字母A ,102 表示字母B,134 表示反斜线,XOA 表示换行等。 【例 3.8】转义字符的使用。 Int main() int a,b,c;a=5;b=6;c=7; printf(“ ab ctderfn”); printf(“hijktLbMn”); return 0; 3.5.3

25、字符变量 字符变量用来存储字符常量,即单个字符。 字符变量的类型说明符是 char。字符变量类型定义的格式和书写规则都与整型变量相同。例如: char a,b; 3.5.4 字符数据在内存中的存储形式及使用方法 每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以 ASCII 码的形式存放在变量的内存单元之中的。 如 x 的十进制 ASCII 码是 120,y 的十进制 ASCII 码是 121。对字符变量 a,b 赋予x和y 值: a=x; b=y; 实际上是在 a,b 两个单元内存放 120 和 121 的二进制代码: a: 0 1111000b: 0 1111001 所

26、以也可以把它们看成是整型量。语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。 整型量为二字节量,字符量为单字节量,当整型量按字符型量处理时,只有低八位字节参与处理。 【例 3.9】向字符变量赋以整数。 Int main() char a,b; a=120;b=121; printf(%c,%cn,a,b); printf(%d,%dn,a,b); return 0; 本程序中定义 a,b 为字符型,但在赋值语句中赋以整型值。从结果看,a,b 值的输出形式取决于 printf 函数格式串中的格式符,当格式符为c时,对应输

27、出的变量值为字符,当格式符为d时,对应输出的变量值为整数。 【例 3.10】 int main() char a,b; a=a;b=b; a=a-32; b=b-32; printf(%c,%cn%d,%dn,a,b,a,b);return 0; 本例中,a,b 被说明为字符变量并赋予字符值,语言允许字符变量参与数值运算,即用字符的 ASCII 码参与运算。由于大小写字母的 ASCII 码相差 32,因此运算后把小写字母换成大写字母。然后分别以整型和字符型输出。 3.5.5 字符串常量 字符串常量是由一对双引号括起的字符序列。例如: CHINA , “C program” , $12.5 等都是合法的字符串常量。 字符串常量和字符常量是不同的量。它们之间

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1