




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计,第三章 数据类型、运算符与表达式,C语言程序设计 第三章 数据类型、运算符与表达式,3.0 预备知识 一.计算机中数的表示及进制转换 1.数制: 二进制 八进制 十进制 十六进制,C语言程序设计 第二章 数据类型、运算符与表达式,2. 各种进制之间的转换 二进制、八进制、十六进制转换成十进制 方法:按权相加 例:,C语言程序设计 第二章 数据类型、运算符与表达式, 十进制转换成二进制、八进制、十六进制 方法:连续除以基,从低到高记录余数,直至商为0 例:,C语言程序设计 第二章 数据类型、运算符与表达式, 十进制转换成二进制、八进制、十六进制 方法:连续除以基,从低到高记录余数,直至商为0 例:, 二进制与八进制之间的转换 二进制转换成八进制: 从右向左,每3位一组(不足3位左补0),转换成八进制,C语言程序设计 第二章 数据类型、运算符与表达式,例 (1101001)2=(001,101,001)2=(151)8,八进制转换成二进制: 用3位二进制数代替每一位八进制数,例 (246)8=(010,100,110)2=(10100110)2, 二进制与十六进制之间的转换 二进制转换成十六进制: 从右向左,每4位一组(不足4位左补0),转换成十六进制,十六进制转换成二进制: 用4位二进制数代替每一位十六进制数,例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16,例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2,一. 字节和位 内存以字节为单元组成 每个字节有一个地址 一个字节一般由8个二进制位组成 每个二进位的值是0或1,C语言程序设计 第三章 数据类型、运算符与表达式,数据在内存中是以二进制形式存放的,二. 数值的表示方法原码、反码和补码 1. 原码:最高位为符号位,其余各位为数值本身的绝 对值 2. 反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反 3. 补码: 正数:补码与原码相同 负数:符号位为1,其余位为原码取反,再对整个数加1,C语言程序设计 第三章 数据类型、运算符与表达式,例:,负数补码转换成十进制数: 最高位不动,其余位取反加1,例: 补码:11111001 取反:10000110 加1: 10000111=-7,C语言程序设计 第三章 数据类型、运算符与表达式,在内存中数值是以补码形式表示的。,C语言程序设计 第三章 数据类型、运算符与表达式,3.1 数据类型, 数据类型总表, 数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,C语言程序设计 第三章 数据类型、运算符与表达式,3.2 常量与变量 一.常量 1.定义:程序运行时其值不能改变的量(即常数) 2.常量分类:(符号常量和直接量) 符号常量: 用标识符(名字)代表常量 定义格式: #define 符号常量 常量 如: #define PI 3.14 优点: 含义清楚,一改全改 注意问题: 一般用大写字母 是宏定义预处理命令,不是C语句,例3-1 符号常量举例 #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); ,运行结果:total=300,数据有常量和变量之分,都有数据类型,C语言程序设计 第三章 数据类型、运算符与表达式,二.变量 1.概念:代表内存中一个具有特定属性的存储单元,存放数据(变量的值),其值在程序运行过程中可以改变。,变量以一个名字(变量名)对应,以便被引用(变量名代表变量地址)。,.,int a, b, c; a = 1; b = -3; c = a;,a,b,c,2字节,2字节,2字节,.,内存,1,-3,C语言程序设计 第三章 数据类型、运算符与表达式,2.变量定义的一般格式:,数据类型 变量1,变量2, ,变量n;,决定分配字节数 和数的表示范围,合法标识符,例: int a,b,c; float data;,3. 变量的初始化: 定义时赋初值,例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;,编译程序根据变量定义为其 分配指定字节的内存单元,C语言程序设计 第三章 数据类型、运算符与表达式,4.注意问题:,变量的使用:先定义,后使用,变量定义位置:一般放在函数开头,main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data); ,main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data); ,int student; stadent=19; /Undefined symbol statent in function main, 保证变量名使用正确,编译时分配存储单元,检测运算是否合法,C语言程序设计 第三章 数据类型、运算符与表达式,三.标识符(一个名字) 1. 定义:用来对变量、常量、函数等命名的有效字符序列。 2. 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 大小写敏感 不能使用关键字 (P365) 3. 长度:最长32个字符变量名的长度最好不要超过8个 4. 命名原则: 见名知意(标识符要有一定的含义) 不宜混淆 如I与1, o与0,例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,M.D.John,3days,#33,char,$123,ab,例: 0123 = ( )10 0x123 = ( )10 0Xff = ( )10, 整型常量(整常数) 三种形式: 十进制整数:由数字09和正负号表示. 如: 123,-456,0 八进制整数:由数字0开头,后跟数字07表示,可以有正负号. 如: 0123,-011 十六进制整数:由0x(或0X)开头,后跟09,af(或 AF)表示,可以有正负号. 如: 0x123,0Xff,-0x12,C语言程序设计 第三章 数据类型、运算符与表达式,整型数据,整型数据,C语言程序设计 第三章 数据类型、运算符与表达式, 整型变量(基本类型为int) 整型变量分类:,整型,有,无,signed int,16,-3276832767,32,04294967295,unsigned long int,unsigned short int,16,065535, 整型变量的定义:,int a, b ; unsigned short c,d ; long e,f ;,C语言程序设计 第三章 数据类型、运算符与表达式,例3-3 #include main() int a,b,c,d; unsigned int u; a=12; b=-24; u=10; c=a+u; d=b+u; printf(“a+u=%d, b+u=%dn”,c,d); , 例:,运行结果: a+u=22, b+u=-14 说明: 不同类型的整型数据可以进行算术运算,整型数据,C语言程序设计 第三章 数据类型、运算符与表达式,注意问题:,C语言程序中所有用到的变量都必须在程序中定义。 变量的定义一般放在一个函数的开头部分的声明部分。,3. 整型数据的溢出问题(P44) 4. 整型常量的类型, 浮点型常量(实数或浮点数) 二种形式: 十进制小数形式:(必须有小数点) 如: 0.123 , .123 , 123.0 , 0.0 , 123. 指数形式:(e或E之前必须有数字;指数必须为整数) 如: 12.3e3 ,123E2 , 1.23e4 , e-5 , 1.2E-3.5,C语言程序设计 第三章 数据类型、运算符与表达式,规范化的指数表示形式: 小数点左边有且仅有一位非零的数字。(1.23456e3) 一个浮点数在用指数形式输出时,是按规范化的指数形式输出的。,浮点型数据,C语言程序设计 第三章 数据类型、运算符与表达式,浮点型变量, 实型变量分类:, 实型数据在内存中按指数形式存放:, 实型变量的定义:,float x, y ; double z ; long double t ;,浮点型变量的有效数字是有限的,有效位以外的数字将被舍去,由此可能会产生一些误差,所以应当避免将一个很大的数和一个很小的数直接相加或相减,否则会丢失小的数!,C语言程序设计 第三章 数据类型、运算符与表达式, 浮点型常量的类型, C编译系统将浮点型常量作双精度来处理。, 如果在数的后面加字母f或F,按单精度处理。, 浮点型常量给变量赋值时,根据变量的类型截取常量中相应的有效位数。,C语言程序设计 第三章 数据类型、运算符与表达式, 字符常量 定义:用单引号括起来的单个普通字符或转义字符(以“”开头的字符序列).,如: a , A , ? , n , 101,转义字符: 反斜线后面跟一个字符或一个代码值表示,字符常量的值:该字符的ASCII码值 (P364),如 A65, a97, 048 , n10,字符型数据,C语言程序设计 第三章 数据类型、运算符与表达式,例: 101 -A 012 -n 376 - x61 -a 060 -0 483 -(),例: A-101-x41-65,例3-2 转义字符举例 main() printf(“101 x42 Cn“); printf(“I say:“How are you?“n“); printf(“C Programn“); printf(“Turbo C“); ,运行结果:(屏幕显示) A B C I say:”How are you?” C Program Turbo C,例 main() printf(“Yb=n”); ,运行结果: 屏幕显示:= 打印机输出:,C语言程序设计 第三章 数据类型、运算符与表达式,C语言程序设计 第三章 数据类型、运算符与表达式, 字符变量, 字符型数据在内存中的存放:,字符数据以ASCII码存储,字符变量占用一个字节(8 bit), 字符变量的定义:,char c1, c2 ; unsigned char c3, c4;, 注意问题:,由于字符变量存放字符ASCII码值,因此字符型数据与整型数据间可进行算术运算,例: char a, x, s; a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */,字符型数据,C语言程序设计 第三章 数据类型、运算符与表达式, 字符串常量:, 定义:用双引号(“”)括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字符串结束标志, 注意问题: 字符常量与字符串常量不同,例: char ch; ch=“A”;,没有字符串变量,用字符数组存放字符串,C语言程序设计 第三章 数据类型、运算符与表达式,例3-4 #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f, ch1=%cn”,total,ch1); , 例:,运行结果: total=37.500000, ch1=d,C语言程序设计 第三章 数据类型、运算符与表达式,变量的类型:,C语言程序设计 第三章 数据类型、运算符与表达式,3.3 不同类型数据间的转换 一.运算转换(不同类型数据间可以混合运算) 不同类型数据运算时先自动转换成同一类型, 转换规则:,1、向左的箭头表示必定的转换 2、float型数据在运算时一律先 转为double型,然后再运算, 以提高运算精度 3、箭头方向表示数据类型转换由 低向高转换 4、类型转换是由系统自动完成的,C语言程序设计 第三章 数据类型、运算符与表达式,C语言程序设计 第三章 数据类型、运算符与表达式,二. 强制转换 1.一般形式:(类型名)(表达式) 例: (int)(x+y) (int)x+y (double)(3/2) (int)3.6 2.注意问题: 强制转换得到所需类型的中间数据,原变量类型不变,例 2-5 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f, i=%d”,x,i); ,C语言程序设计 第三章 数据类型、运算符与表达式,C语言程序设计 第三章 数据类型、运算符与表达式,3.4 运算符和表达式,C 语言中,除控制语句和输入输出以外, 几乎所有的基本操作都作为运算符处理。,C语言程序设计 第三章 数据类型、运算符与表达式, 学习运算符应掌握以下内容: 运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型,例 5/2 = -5/2.0 =,C语言程序设计 第三章 数据类型、运算符与表达式,一.算术运算符和表达式,例 5/2 = 2 -5/2.0 = -2.5,例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2,例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 (),+:加法运算符,或正值运算符。如:3+5、+3 -: 减法运算符,或负值运算符。如:5 - 2、-3 *:乘法运算符 如:3 * 5 /: 除法运算符 如:5 / 3 5.6 / 2 5.6 / 2.1 %:模运算,或求余运算(%的两侧均为整型数据)如:7%3,说明: 1、除法 / 的两侧为整数,则运算结果为整数,舍去小数部分,但如果两个数中,有一个为负数,则舍入的方向不固定,一般采用“向零取整”的方法 2、如果参加 +、- 、*、/运算的两个数中有一个为实数, 则结果为double型,算术表达式和运算符的优先级与结合性,C 算术表达式:用算术运算符和括号将运算对象(或称操作数)连接起来的、符合C 语法规则的式子。 运算对象包括常量、变量、函数等。 如:a*b/c 1.5+ a,运算符的优先级和结合性(见教材附 录III page 365): 表达式求值时按照运算符的优先级高低次序执行,如果运算对象两侧运算符的优先级相同,按结合方向处理。 比如:-i+;相当于-(i+),注意: 如果一个运算符的两侧的数据类型不同, 则先自动进行类型转换,然后进行运算。,C语言程序设计 第三章 数据类型、运算符与表达式,C语言程序设计 第三章 数据类型、运算符与表达式,2.自增、自减运算符 + -, 作用:使变量值加1或减1, 种类:, 前置 +i, -i (先执行i+1或i-1,再使用i值), 后置 i+,i- (先使用i值,再执行i+1或i-1),例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,C语言程序设计 第三章 数据类型、运算符与表达式,2.自增、自减运算符 + -, 作用:使变量值加1或减1, 种类:, 前置 +i, -i (先执行i+1或i-1,再使用i值), 后置 i+,i- (先使用i值,再执行i+1或i-1), 注意问题:, + - 不能用于常量和表达式,如:5+,(a+b)+, + - 结合方向: 自右向左, 优先级:- + - -* / % -+ -,(2) (3) (4),例:-i+; i=3; printf(“%d”,-i+);, -(i+),/-3,C语言程序设计 第三章 数据类型、运算符与表达式,二.赋值运算符和表达式,1. 简单赋值运算符P59,符号:= 格式:变量标识符=表达式 作用:将一个数据(常量或表达式)赋给一个变量,例: a=3; d=func(); c=d+2;,2. 复合赋值运算符,种类:+= -= *= /= %= = = &= = |= 可表示为: op= 含义:exp1 op= exp2 exp1=exp1 op exp2,如:,3. 说明,C语言程序设计 第三章 数据类型、运算符与表达式,结合方向:自右向左 优先级: 14 左侧必须是变量,不能是常量或表达式,例: 3=x-2*y; a+b=3;,赋值转换规则:赋值号右边表达式值自动转换成其左 边变量的类型,例: float f; int i; i=10; f=i; / 结果为:f=10.0,例 int i; i=2.56; /结果i=2;,赋值表达式的值与变量值相等,且可嵌套,例: a=(b=5) a=b=c=5 a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表达式值为5,a,b,c值为5,/表达式值为5,b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,例: a=12; a+=a-=a*a,/a=-264 等价于a=a+(a=a-(a*a),类型转换关系 : 当赋值符号两侧的数据的类型不同,要进行类型转换,1、将实型数据赋给整型变量时,截取整数部分; 2、将整型数据赋给实型变量,数值不变,但以浮点数 形式存储到变量中; 3、将一个double数据给float 变量时,截取其前面 7位有效数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025民办教师劳动合同
- 2025标准合同模板电商劳动合同
- 兰州大学入学教育考试试题及答案
- 一建机电考试题库及答案
- 2025年主管护师考试试题带答案
- 2025企业租赁合同书范本定金版版
- 2025年微信公众号运营风险评估与管理合同
- 2025年母乳喂养知识试题(含答案)
- 2025工会知识竞赛题库和参考答案
- 2025年合同协议范本的书写格式
- 灭火器正确使用方法
- 国有企业普法培训课件
- 传统建筑对现代建筑的影响与启示
- 用户需求驱动产品设计
- 《铁路旅客运输组织》课件
- 文明礼仪从我做起主题班会课件
- 健康养老与医养结合
- 小学生主题班会 好习惯的养成 课件
- 浦东科普诗词大赛题库
- 水工混凝土结构设计规范sl191-2008
- 老干部工作业务知识要点课件-湖南大学离退休处
评论
0/150
提交评论