欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第3章 数据类型、运算符.ppt

    • 资源ID:2254127       资源大小:224.51KB        全文页数:57页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第3章 数据类型、运算符.ppt

    第3章 数据类型、运算符与表达式,C程序设计,3.1 C语言的数据类型,3.2 常量与变量,3.2.1 常量和符号常量 常量是指在运行过程中,其值不能被改变的量称为常量。 根据常量的取值对象,C语言将常量分为以下5种类型: (1) 整型常量。例如:16,0,-3等。 (2) 浮点型常量。例如:3.14159,-3.6等。 (3) 字符常量。例如:'A','5','#'等。,3.2.1 常量和符号常量(续),(4) 字符串常量。例如:“Abc“,“6estghj“,“45+35“等。 (5) 符号常量。例如:“#define PI 3.14159”中的PI等。 符号常量,用一个标识符代表的常量。 格式:#define 常量名 字面常量 举例:#define PRICE 100 #define PI 3.14 #define C1 a 习惯上,符号常量名用大写,变量用小写,以示区别。,3.2.1 常量和符号常量(续),例3.1 符号常量的使用 #define PRICE 30 #include void main ( ) int num, total; num=10; total=num * PRICE; printf(total=%dn,total); ,3.2.2 变量,变量:在程序运行过程中,其值可以改变的量称为变量。 变量的两个要素 (1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。 (2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。 标识符: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 大小写敏感 不能使用关键字 长度:最长32个字符,3.2.2 变量(续),变量名命名原则:见名知意 合法的变量名如:aver,a,s2,student_name,_init 不合法的变量名:M.D.John, 1a, #33, ab C 语言要求对变量“先定义,后使用”,其目的在于: 凡未被事先定义的,不作为变量名,从而能保证程序中变量名使用得正确。 每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元。 每一变量属于一个类型,就便于在编译时据此检查该变量所进行的运算是否合法。,3.3 整型数据,3.3.2整型常量的表示方法 整型常量,即整型常数。C语言整型常量可用以下3种形式表示: 十进制整数:由数字09和正负号表示.如 123,-456,0 八进制整数:由数字0开头,后跟数字07表示.如0123,011 十六进制整数:由0x开头,后跟09,af,AF表示. 如0x123,0Xff,1. 整型数据在内存中的存放形式。(参见教材) 数据在内存中是以二进制形式存放的。 如: int i; /* 定义为整型变量 */ i=10; /* 给i赋以整数10 */,3.3.2 整型变量,3.3.2 整型变量(续),2. 整型变量的分类 整型变量可分为以下4种整型类型: a. 基本型,以int表示; b. 短整型,以short表示; c. 长整型,以long表示; d. 无符号整型,以unsigned表示。,3.3.2 整型变量(续),3. 整型变量的定义 规定在程序中所有用到的变量都必须在程序中定义,即“强制类型定义”。 例如: int a,b(指定变量、为整型) unsigned short c,d;(指定变量、为无符号短整型) long e,f;(指定变量、为长整型),3.3.2 整型变量(续),例3.2 整型变量的定义与使用 #include void main() int a,b,c,d; /*指定,为整型变量* unsigned ; *指定为无符号整型变量* 12;-24;10; ; printf(“,”,,); ,3.3.2 整型变量(续),4.整型数据的溢出 例3.3 整型数据的溢出 #include void main() int a,b; a=32767; b=a+1; printf(“%d,%dn”,a,b); ,数值是以补码表示的。一个整型变量只能容纳-3276832767范围内的数,无法表示大于32767或小于-32768的数。遇此情况就发生“溢出”。,3.3.3 整型常量的类型, 一个整常量,其值在-215215-1内可认为是 int 型,并可赋值给 int 型和 long int 型变量; 一个整常量,其值在 231 231-1 范围内则认为它是 long int 型,可赋值给一个 long int 型变量; 如果某一微机的C版本确定的short int 与 int 型数据在内存中占据的长度相同,则它的表数范围与 int 型相同,因此,一个 int 型的常量也同时是一个 short int 型常量,可以赋给 int 或 short int 型变量; 常量中无 unsigned 型,但一个非负值的整常量可以赋给 unsigned 型整变量; 在一个整常量后面加字母 l 或 L ,则认为是long int 型常量。,3.4 浮点型数据,3.4.1 浮点型常量的表示方法 有两种方式: 十进制小数形式: 123. 34,-0.0045, 0.0 指数形式: E(e) 如0.23e2 ,-0.45e-3, 3.0+5 注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数 例如: 1e3、1.8e-3、-123e-6、-.1e-3 e3、2.1e3.5、.e3、e,3.4 浮点型数据,3.4.2 浮点型变量 1. 浮点型数据在内存中的存放形式 一个浮点型数据一般在内存中占4个字节(32位)。与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。 指数形式:(数符+小数部分+指数部分),3.4.2 浮点型变量(续),规范化的指数形式: 在字母e(或E)之前的小数部分中,小数点左边 应有一位(且只能有一位)非零的数字. 例如: 123.456可以表示为:1.23456e3,3.4.2 浮点型变量(续),2. 浮点型变量的分类 浮点型变量分为单精度(float型)、双精度(double型)和长双精度型(long double)三类形式。,3.4.2 浮点型变量(续),3. 浮点型数据的舍入误差 例3.4 浮点型数据的舍入误差 #include void main() float a,b; a = 123456.789e5; b = a + 20 ; printf(“%fn”,b); ,说明:一个浮点型变量只能保证的有效数字是7位有效数字,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数,3.4.3 浮点型常量的类型,C编译系统将浮点型常量作为双精度来处理。 例如:f = 2.45678 * 4523.65 系统先把2.45678和4523.65作为双精度数,然后进行相乘的运算,得到的乘也是一个双精度数。最后取其前7位赋给浮点型变量f。如是在数的后面加字母f或F(如1.65f, 654.87F),这样编译系统就会把它们按单精度(32位)处理。,3.5 字符型数据,3.5.1 字符常量 (1)由一对单引号括起来的一个字符。如 :a, x, D, #。 一些特殊的字符常量:以“”开头的字符序列,有特殊的含义,叫转义符,3.5.1 字符常量(续),转义符,3.5.1 字符常量(续),例3.5 转义字符的使用 #include void main() printf(“ ab ct der ft gn“); printf(”ht ibb j kn”); ,3.5.2字符变量,字符型变量用来存放字符常量,注意只能放一个字符。 字符变量的定义形式如下:char c1,c2; 在本函数中可以用下面语句对c1,c2赋值: c1a;c2 b ; 一个字符变量在内存中占一个字节,以ASCII码存储,3.5.3字符数据在内存中的存储形式及其使用方法,在内存中,字符变量的实际值是字符变量相应的ASCII代码。 C语言中,字符型数据和整型数据之间可以通用,因此在C语言中,一个字符数据即可以以字符形式输出,也可以以整数形式输出。 字符数据与整型数据可以互相赋值。,3.5.3字符数据在内存中的存储形式及其使用方法(续),例3.6 向字符变量赋以整数。 #include void main() char c1,c2; c1=97; c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); ,3.5.3字符数据在内存中的存储形式及其使用方法(续),例3.7 大小写字母的转换 #include void main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“c c,c1,c2); ,3.5.4字符串常量,字符串常量是一对双撇号括起来的字符序列. 合法的字符串常量: “How do you do.”, “CHINA”, “a” , “$123.45” 可以输出一个字符串,如 printf(“How do you do.”); 在内存中,对字符串常量是采用字符数组表示,即用一个字符型数组来存放一个字符串。 注意: a是字符常量,“a”是字符串常量,二者不同。,3.5.4字符串常量(续),规定:在每一个字符串常量的结尾加一个 “字符 串结束标志”,以便系统据此判断字符串是否结束。 规定以字符作为字符串结束标志。 如:如果有一个字符串常量” ,实际上在内存中是: 它占内存单元不是个字符,而是个字符,最后一个字符为。但在输出时不输出。 C中没有字符串变量 (字符串用字符型数组进行处理)。,3.6变量赋初值,(1)语言允许在定义变量的同时使变量初始化 如: int a=3; /* 指定为整型变量,初值为*/ float f=3.56; /* 指定为浮点型变量,初值 为.56 */ char c= a; /*指定为字符变量,初值为a */ int a,b,c = 5 ; /*表示只给c赋初值。 */ (相当于int a,b,c; c = 5;),3.6变量赋初值(续),(2)可以使被定义的变量的一部分赋初值。 如: int a,b,c=5; 表示指定、为整型变量,但只对初始化,c的初值为 (3)如果对几个变量赋以同一个初值, 应写成:int a=3,b=3,c=3; 表示、的初值都是。 不能写成 int a=b=c=3;,3.7各类数值型数据间的混合运算,不同类型的数据(整型、实型、字符型)可以进行混合运算。 如:10 + a + 1.5 8765.1234 * b 必须首先将它们转换成同一类型的数值。 转换原则是由低向高转换,运算结果为最高级别的类型。,1、向左的箭头表示必定的转换 2、float型数据在运算时一律先 转为double型, 然后再相加,以提高运算速度 3、箭头方向表示数据类型转换由 低向高转换 4、类型转换是由系统自动完成的,3.8 算术运算符和算术表达式,3.8.1 运算符简介,3.8.2 算术运算符和算术表达式(续),1. 基本的算术运算符: (加法运算符,或正值运算符。如:、) (减法运算符,或负值运算符。如:、) * (乘法运算符。如:*) (除法运算符。如:) (模运算符,或称求余运算符,两侧均应为整型数据,如:的值为)。,3.8.2 算术运算符和算术表达式(续),2. 算术表达式和运算符的优先级与结合性: C 算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,称为算术表达式。运算对象包括常量、变量、函数等。 例如: *.5a 是一个合法的表达式 运算符的优先级和结合性:见教材附 录III,3.8.2 算术运算符和算术表达式(续),3. 强制类型转换运算符 C语言可以利用强制类型转换符可以将一个表达式转换成所需类型 强制类型转换符的一般形式: (类型名)变量或(表达式) 例如: (double) /*将转换成double类型*/ (int)(x+y) /*将x+y的值转换成整型*/ (float)(5%3) /*将5%3的值转换成float型*/,3.8.2 算术运算符和算术表达式(续),说明: 1、表达式应用括号( )括起来 2、强制转换时,变量的原有类型未发生变化, 只是得到一个中间变量。,3.8.2 算术运算符和算术表达式(续),例3.8 强制类型转换。 #include void main() float ; int i; x=3.6; i=(int)x; printf(“x=%f, i=%dn“,x,i); ,3.8.2 算术运算符和算术表达式(续),4. 自增、自减运算符 作用是使变量的值增或减 例如: +i,-i(在使用i之前,先使i的值加(减) i+,i-(在使用i之后,使i的值加(减),3.8.2 算术运算符和算术表达式(续),i+与+i的区别: + + i是先计算i = i+1,后使用i的值(即把增加1后的i值作为表达式+ + i 的值); i + +是先引用 i 的值(即把i原有的值 作为表达式i + +的值),后进行计算i = i+1,此时 i 的值才增加1。 例如: ;i的值先变成4, 再赋给,j的值均为 ; 先将 i的值3赋给,的值为,然后变为,3.8.2 算术运算符和算术表达式(续),注意: (1)自增运算符(),自减运算符(),只能用于变量,而不能用于常量或表达式, (2)和的结合方向是“自右至左”。 自增(减)运算符常用于循环语句中使循环变量 自动加。也用于指针变量,使指针指向下一个地址,3.8.2 算术运算符和算术表达式(续),5. 有关表达式使用中的问题说明 ANSI C并没有具体规定表达式中的子表达式的求值顺序,允许各编译系统自己安排。 例如:对表达式 a = f1( )+f2( ) 并不是所有的编译系统都先调用f1( ), 然后 调用f2( )。在有的情况下结果可能不同。有时会出 现一些令人容易搞混的问题,因此务必要小心谨慎。,3.8.2 算术运算符和算术表达式(续),语言中有的运算符为一个字符,有的运算符由 两个字符组成 ,为避免误解,最好采取大家都能理 解的写法。 例如:不要写成i+j的形式,而应写成 (i+)+j的形式,3.8.2 算术运算符和算术表达式(续),在调用函数时,实参数的求值顺序,标准并无统 一规定。 例如:的初值为,如果有下面的函数调用: printf(,i+) 在有的系统中,从左至右求值,输出“,” 在多数系统中对函数参数的求值顺序是自右而左, printf函数输出的是“,”。以上这种写法不宜提倡, 最好改写成 j = i+; printf(“%d, %d“, j,i),3.9 赋值运算符和赋值表达式,1. 赋值运算符: 赋值符号“”就是赋值运算符,它的作用是将一个数据(常量、变量或表达式的值)赋值给一个变量 2.类型转换 如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。 例如:将浮点型数据(包括单、双精度)赋给整型变量时,舍弃浮点数的小数部分。. 将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中,3.9 赋值运算符和赋值表达式(续),将一个double型数据赋给float变量时,截取其前面7位有效数字,存放到float变量的存储单元(4个字节)中。但应注意数值范围不能溢出。 如果将一个float型数据赋给double变量时,数值不变,有效位数扩展到16位,在内存中以8个字节存储 字符型数据赋给整型变量时,由于字符只占1个字节,而整型变量为个字节,因此将字符数据(个二进位)放到整型变量存储单元的低位中。 将int、short、long数据给char 变量时,只将低8位送到char变量中(即截断);,3.9 赋值运算符和赋值表达式(续),将带符号的整型数据赋给long型变量时,要进行符号扩展;反之,截断; 将unsigned int数据赋给long int 变量时,只将高位补0即可; 将非unsigned数据赋给长度相同的unsigned变量,是照原样赋值; 总之:不同类型的整型数据间的赋值是按存储单 元中的 存储形式直接传送。,3.9 赋值运算符和赋值表达式(续),3. 复合的赋值运算符 在=之前加上其他运算符(比如+= 、 -= 、 *= 、 /= ),构成复合赋值运算符 例如: 等价于 * 等价于 *() 等价于 为便于记忆,可以这样理解: a += b (其中a为变量,b为表达式) a += b(将有下划线的“a+”移到“=”右侧) |_ a = a + b (在“=”左侧补上变量名a),3.9 赋值运算符和赋值表达式(续),注意:如果是包含若干项的表达式,则相当于它有括号。 如: x %= y+3 x %= (y+3) |_ x = x %(y+3)(不要错写成x=x%y+3) 语言规定可以使用种复合赋值运算符: ,*,|,3.9 赋值运算符和赋值表达式(续),4. 赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。 一般形式为: 例如: a=5 a=x*6,3.9 赋值运算符和赋值表达式(续),赋值表达式可以嵌套 如:a=(b=6) 等价于 b=6和 a=b a=b=c=5 a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) 赋值表达式可以包括复合的赋值运算符 如:a += a-= a * a 若 a的初值为 3,则 1)a-=a*a,即 a = aa*a a的值为 6 2)a+=-6,即 a=a+(- 6) a 的值为-12,3.10 逗号运算符和逗号表达式,逗号运算符又称为“顺序求值运算符”,是所有运算符中级别最低的,它将两个表达式连接起来。 一般形式为: 表达式1,表达式2,表达式3表达式n 求解过程:先求解表达式1,再求解表达式2, 直到最后求表达式 n 的值,整个逗号表 达式的值是最后一个表达式 n 的值;,3.10 逗号运算符和逗号表达式(续),例如: a=3*5, a*4; a的值为15,表达式的值为60 (a=3*5, a*4), a+5; a的值为15, 表达式的值为20 又如: x=(a=3, 6*3); x的值为18 x=a=3, 6*a x的值为3, 表达式的值为18,3.10 逗号运算符和逗号表达式(续),1、逗号表达式的求解过程为自左至右,依次计算各表达式的值,最后一个表达式的值即为整个逗号表达式的值; 2、逗号运算符的优先级最低。 3、使用逗号表达式的目的通常是想分别得到各个表达式的值,而并非一定要得到整个表达式的值。 4、常用于for循环语句中,除此以外很少使用。,本章小结,C语言的各种类型常量表示,其中整数可采用十、八和十六进制数表示。 变量的定义及初始化。 不同类型的数据可混合运算,系统进行类型转换。强制类型转换时注意,由较短类型转换为较长类型时可能有误差甚至出错。 C语言的运算符及它们的优先级和结合性,本章作业,3.4 3.6 3.7 3.8 3.9 3.10 3.12,

    注意事项

    本文(第3章 数据类型、运算符.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开