数据类型及运算符.ppt

上传人:max****ui 文档编号:15216902 上传时间:2020-08-05 格式:PPT 页数:36 大小:364.31KB
返回 下载 相关 举报
数据类型及运算符.ppt_第1页
第1页 / 共36页
数据类型及运算符.ppt_第2页
第2页 / 共36页
数据类型及运算符.ppt_第3页
第3页 / 共36页
点击查看更多>>
资源描述
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,0 x15L。其中,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 逻辑运算符和逻辑表达式,! : 是逻辑非运算符,为单目运算 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的运算结果为double 型,34,注: C+ 不可以自动转换,35,2. 强制类型转换,例: x=3.6; y=(int)x ; 【例2.14】观察各个变量的值。 #include void main() int a,b,c,d; float x=12.8,y=2.5; a=x/y; b=(int)x/y; c=(int)(x/y); d=(int)(x)/(int)(y); printf(“x=%f y=%fna=%d b=%d c=%d d=%d”,x,y,a,b,c,d); ,36,课后练习: P68 一. 二. 三.,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!