数据类型及运算符.ppt_第1页
数据类型及运算符.ppt_第2页
数据类型及运算符.ppt_第3页
数据类型及运算符.ppt_第4页
数据类型及运算符.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1,第 2 章 数据类型及表达式,广州大学华软学院 软件工程系 张明辉 ,2,本章主要介绍: 基本数据类型和存储类型的说明方法,以及基本运算符的运算规则和表达式的构成方法,为后续章节的学习奠定一个基础。,3,2.1 C/C+语言的数据类型,数据类型,基本类型,整型,实型,字符型,带符号整型(简称整型),带符号短整型(简称短整型),带符号长整型(简称长整型),带符号整型,无符号整型,无符号整型,无符号短整型,无符号长整型,单精度型,双精度型,空类型,构造类型,指针型,枚举型,数组型,结构型,共用型,4,2.1 C语言的数据类型,使用高级语言编写程序,主要工作有两项: 一、是描述数据, 二、是描述数据加工的方法。,5,2.2 常量,常量是程序运行过程中其值不变的数据。,【例2.1】求一个圆柱体体积,用符号常量代替。 #include #define PI 3.14159 / /定义PI为符号常量 void main( ) float r,h,v; scanf(“%f,%f“, ,运行时输入:3,2 Volume=56.548618,6,2.2.5 字符串常量,“tabrcdnefg“ “I am a student“ 、“x“、“ 注意: 0和0不同,0是编码为0的字符,而0则是数字0,其编码为48。 再有x和“x”也是不同的,前者是字符常量,它是单独一个字符x,其长度为1。,x,X 0,7,2.3 变 量,变量是指在程序运行过程中其值可以发生变化的量。 2.3.1 变量的数据类型及其定义 1.变量的数据类型 p49 表2.2 整型数据所占内存长度和数据 表2.3 实型数据所占内存长度、数据范围 及有效数字,8,说明: 1)任何类型的数据在计算机内部都是以二进制的形式来存放 的。C语言存储基本整型和短整型数据占用2个字节,范围 是-3276832767。 C+语言中存储基本整型占用4个字节,范围和C语言中长 整型一样:-21474836482147483647。 2)长整型:0L, -11L,0x15L。其中,0L为八进制、-11L为十 进制、0X15L 为十六进制整数。 3)无符号整型数没有符号位,只能表示正数。范围是065535。 4)单精度实型数据用4个字节存储,范围是10-381038。 5)双精度实型数据用8个字节存储,10-30810308。 6)字符型数据用一个字节存储。基本ASCII:0127,9,2. 变量的数据类型定义,数据类型符 变量列表; int a, b, c; char ch, str; double f1, f2; unsigned int u1, u2; (int 可以省略) long int g1, g2; (int 可以省略),10,变量定义可以出现在程序的3个地方,同时,变量定义的位置决定变量作用范围,又称为“作用域”。, 在函数的内部定义的变量称为局部变量。它从定义处开始直到此函数结束起作用。 在函数的参数中定义的变量称为局部变量。它的作用域是从定义处开始直到此函数结束。 在所有函数的外部定义的变量称为全局变量。它的作用域是从开始处直到程序结束。 见p53 例2.5,11,2.3.2 变量的存储类型及其定义,变量的存储类型 CPU寄存器:CPU寄存器中存储数据的是动态存 储类型,不能长期占用,存取速度最快。 内 存:内存中又分为两个区域,即为静态存储区 (静态变量)和动态存储区(动态变量)。 程序运行一直占用内存,直到程序结束。 P51 表2.4,12,2. 变量存储类型的定义,格式:存储类型 数据类型 变量列表; 自动变量 【例2.2】定义自动整型和字符型变量。 #include void main() auto char c1,c2; /可省略auto 类型修饰符,默认为自动型 auto int i1,i2; scanf(“%d,%d“, ,13,(2) 寄存器变量,【例2.3】函数内部定义寄存器变量。 #include void main() register b; / 定义变量b为寄存器型变量 b=3; printf(“b=%d“,b); ,14,(3) 静态变量,静态变量在定义时为其分配固定的内存单元并根据所定义的数据类型存入默认值,在程序运行中一直占用内存单元不释放,直到程序运行结束后。 静态局部变量 用static定义的变量为静态变量,称为静态局部变量,该变量在其函数中或复合语句中有效。,15,【例2.4】函数f()中有静态局部变量和自动变量,要理解在多次调用函数f过程中,两种变量值的变化。 int f( ) static int a=1; / 变量a 是局部变量,其数据一直保持不变。 auto int b=0; / 变量b 是自动变量,每次调用都重新赋值0 ,16,静态全局变量 【例2.5】观察程序中静态全局变量和存在形式。 #include static int a=1; / 变量a 在此文件中有效,其它文件不可以使用 void main() auto int b=0; a=a+1; b=b+1; printf(“na=%d,b=%dn“,a,b); ,运行结果:a=2,b=1,17,1. 每个程序称为一个“编译单位”,最后,将它们连接在一起 生成.exe文件,2.若在A.cpp源程序中定义的全局变量,其它的多个文件可以 使用,这称为外部变量。,3.使用关键字“extern”定义的变量称为外部变量,(4) 外部变量,18,2.3.4 基本数据类型的使用,1. 整型变量 【例2.6】内存单元中同一个数据按有符号和无符号格式输出的情况。 #include void main() unsigned short a=65535; short int b=a; /变量a,b的初始化 printf(“a=%un“,a); printf(“b=%dn“,b); printf(“a=%d,%o,%x,%un“,a,a,a,a); ,a=65535 b=-1 a=-1,177777,ffff,65535,19,2. 实型变量,例2.8】输出实型双精度数据。 #include void main() double x,y; x=1111111111111.111111111; y=2222222222222.222222222; printf(“%fn“,x+y); ,3333333333333.333010,小数位占多少位由编译系统决定,20,3. 字符型变量,字符型变量在计算机内存储的是其字符对应的ASCII值,例如,char c1=A; 【例2.9】输入英文字母A,转换成小写字母输出。 void main() char c1,c2; c1=getchar( ); putchar(c1); c2=c1+32; /ASCII在相加 putchar(c2); printf(“n%d,%dn“,c1,c2); /输出ASCII ,程序运行时输入: A 运行结果为: Aa,21,4常变量,C+中定义变量时,加上关键字const,则变量称为常变量。常变量的值在运行期间不变。 例如: const int a=3;,22,2.4 运算符及表达式,见P58 图2.5 运算符分类 表2.5 算术运算符 表2.6 关系运算符 表2.7 逻辑运算符 表2.8 算术自反赋值运算符,23,2.4.1 算术运算符和算术表达式,例2.10】求两个整数相除的余数。程序清单如下: #include void main() printf(“%d,%d,%d,%d“,7%3,7%(-3),-7%3,-7%(-3); 思考:若将%改为/,运行结果为?,运行结果为: 1,1,-1,-1,模运算在判断一个整数能否被另一个整数整除时很方便,例如,判断n是否能被2 整除,可使用(n%2=0)来判断 。,24,2.4.2 关系运算符和关系表达式,关系运算符的优先级低于算术运算符。前4种关系运算符(、=)的优先级相同,后2种(=,!=)也相同。且前4种的优先级高于后2种。,例如:求下列关系表达式的值: (1)5=3 (关系表达式的值为“假”值,结果为0) (2)x3 (若x3时,表达式的值为“真”值,结果为1) (3)35=68 结果=?,25,2.4.3 逻辑运算符和逻辑表达式,! : 是逻辑非运算符,为单目运算 & : 是逻辑与运算符,为双目运算 | : 是逻辑或运算符,为双目运算 注:运算符两边都有操作数的为双目运算符 1 逻辑非表达式 例如: !a、!(x+y)、x+!y,26,2 逻辑与表达式,如:表达式 a&b,(x+y)&(a*b/c)都是合法的逻辑与表达式。 与运算规则:如果两个操作对象均为1时,则表达式的结 果为1 ,否则表达式结果为0。 思考:当a=3,b=4,c=8,d=6 时,(ab)&(cd) 逻辑表达式的运算结果为?,27,3 逻辑或表达式,例如: (x+y)|(a*b/c), (ab)|(c=-5&a10 对应的C 语言表达式是:a10,28,2.4.4 赋值运算符和赋值表达式,1赋值运算符 +=,-=,*=,/=,%=,=,=,&=,=,|=。 2赋值表达式 (1)使用“=”给变量赋值,使变量得到一个值. 例如:a=1 ,b=5*PI,c=a,29,(2)复合赋值运算符,例如: a-=b-5 相当于 a=a-(b-5) a*=b+c 相当于 a=a*(b+c) 2.4.5 逗号运算符和逗号表达式 表达式1,表达式2,表达式n a=8+4,a/2 逗号表达式是一个求值运算符。计算时顺序为分别求解每一个表达式,整个表达式的值是最右边表达式的值。 逗号运算符的优先级最低 思考P71 一、4 . 10,30,2.4.6 自增,自减(+,-),说明:“+”和“-”运算符位于变量的前或后, 在前:先进行自增(减)后使用。 在后:先用变量后自增(减)。 思考: x=1; y1=+x; 和 y2=x+; y1和y2的值分别是?,使用“+”和“-”运算时需要注意以下问题: (1)+和-运算只能用于变量,而不能用于常量和表达式。 (2)+和-运算是单目运算符,运算方向是自右向左。,31,【例2.11】 变量的自增自减运算举例。 #include void main() int x=10; printf(“%dn“,-x+); /x内存单元存放的是10,输出x的相反数 printf(“%dn“,x); /x使用过后在10的基础上自增1 ,-10 11,注意:在表达式中包含+或-运算时, 例如: i+j 应该写成:(i+)+(+j) 。 i+j 应写成:(i+)+j。 C/C+中规定函数的实参求值顺序是自右向左。 思考:i=3;则执行printf(“%d,%dn“,i,i+);,32,2.4.7 长度运算符,长度运算符sizeof是单目运算符 sizeof(类型说明符)或 sizeof (表达式) 【例2.13】长度运算符的使用。 void main() int i; short s; unsigned u; long int l; float f; char ch; double d; printf(“%d,%d,%d,%d,%d,%d,%d“,sizeof(i),sizeof(s),sizeof(u),sizeof(l),sizeof(f),sizeof(ch),sizeof(d); ,2,2,2,4,4,1,8,33,2.4.8 混合运算和类型转换,C /C+语言中,不同类型的数据可混合运算,但首先要转换成相同类型,且转换成最长的数据类型,然后再进行运算。 数据类型转换有两种方式: 即:自动类型转换 强制类型转换。 1.自动类型转换 10+a+1.5-5678.444*b的运算结果为dou

温馨提示

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

评论

0/150

提交评论