




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 数据类型、运算符与表达式,数据类型 常量与变量 整型数据 实型数据 字符型数据,变量赋初值 各类数值型数据间的混合运算 算术运算符和算术表达式 赋值运算符和赋值表达式 逗号运算符和逗号表达式,回顾,程序是为执行一项任务而编写的有序指令集 算法是解决问题的具体方法和步骤 流程图是算法的图形化表现形式 C语言的特点 C程序的编译和运行过程 编译器将源程序转换成机器能理解的程序 连接器用于连接相关的目标文件以生成可执行程序,目标,理解变量和常量的含义 熟悉基本数据类型 - int、char、float 和 double 使用算术运算符 理解类型转换 熟练掌握自增和自减运算 熟练掌握复合赋值表
2、达式,一C的数据类型,(一) 什么是数据类型? (二) C语言的数据类型有哪些?,(一) 什么是数据类型?,数据结构+算法=程序,C语言中以 “数据类型”形式存在,对数据的描述,对操作的描述,3.1 C的数据类型,指针类型,空类型void,定义类型typedef,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,返回,基本数据类型,整型,字符型,实型,有,无,说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例,-21474836482147483647,04294967295,(一) 常 量 (二) 变 量,3.2 常量与变量,概念,在程序
3、运行过程中,其值不能被改变的量。,分类,字面常量(直接常量): 12 -44.6 a Hello! 符号常量:用一个标识符代表一个常量。,字符串常量,符号常量的定义,格式:#define 常量名 字面常量 举例:#define PRICE 100 #define PI 3.14 #define C1 a,习惯上常量名用大写, 变量名用小写。,意义,1、含义清楚。 2、在需要改变一个常量时,能够做到“一改全改”。,符号常量的定义放在 函数外面。,(一) 常量,符号常量使用,#define PRICE 30 main() int num,total; num=10; total=num*PRICE
4、; printf(total=%d,total); ,运行结果:total=300,符号常量的使用能给程序员带来哪些好处?,单价符号常量,概念,其值可以改变的量称为变量。,(二)变量,要素,(1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。 (2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。,标识符 identifier,1、标识符就是一个名字(如常量名、变量名、函数名)。 2、组成:只能由字母、数字、下划线组成。且第一个字符必须为字母或下划线。 3、长度:标识符的有效长度随系统而异,如果超长,则超长部分被舍弃。VC+6.0中规定最
5、大长度为247个字符。 4、标识符命名的良好习惯见名知意,标识符命名实例:stu_name, sum, total, day, count, sort,标识符 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 大小写敏感 不能使用关键字,讨论:判断下列标识符号合法性 sumSumM.D.JohndayDate3days student_name#33lotus_1_2_3charab above $123 _toDay,M.D.John,3days,#33,char,$123,ab,返回,变量定义,数据类型 变量名, 变量名2;,习惯上,变量名用小写字母。 常量名用大写字母。,方式
6、: 1、定义变量的同时赋初值(也叫变量初始化)。 格式: 数据类型 变量名=初值, 变量名2=初值2; 2、通过一个赋值语句给变量赋初值。 格式 : 变量名=初值;,变量赋初值,出现在函数体 的声明部分,出现在函数体 的执行部分,int a,b=3;,int a,b; b=3;,变量的使用:作强制定义,也就是“先定义,后使用”,例1 int student; stadent=19; /Undefined symbol stadent in function main,例2 float a,b,c; c=a%b; /Illegal use of floating point in functio
7、n main,变量,程序,编写程序时,常常需要将数据存储在内存中,方便后面使用这个数据或者修改这个数据的值。,通常使用变量来存储数据。使用变量可以引用存储在内存中的数据,并随时根据需要显示数据或执行数据操纵。,存储 Rate,Rate * 5%,将值存储为DiscAmt,Rate-DiscAmt,10,0.5,将值存储为Result,9.5,声明和使用变量,声明变量: Datatype variablename; 定义时初始化变量: Datatype variablename = value; 定义后初始化变量: variablename = value;,给变量赋值,除了给一个直接的值以外,
8、还可以通过计算获得。,变量命名,在 C 语言中,变量命名需要遵循一定的规则,有效名称,principal,cost_price,marks_3,lastname,city,无效名称,123rate,currency$,discount%,zip code,变量的命名规则: 变量名可以由字母、数字和 _(下划线)组合而成 变量名不能包含除 _ 以外的任何特殊字符,如:%、# 、逗号、空格等 变量名必须以字母或 _(下划线)开头 变量名不能包含空白字符(换行符、空格和制表符称为空白字符) C 语言中的某些词(例如 int 和 float 等)称为保留字,具有特殊意义,不能用作变量名 C 语言区分大
9、小写,因此变量 price 与变量 PRICE 是两个不同的变量,变量举例,include void main() int student,age; int if=adrress=1; float score=90; stadent=2; Age=20.7; printf(%d %d %d %f,if,student,age,score); ,本程序中有几处错误?,undeclared identifier,(一) 整数类型 (二) 实数类型 (三) 字符类型 (四) 不同类型数据间的转换,四、基本数据类型,整型数据 整型常量,问题: 0123 = ( )10 0 x123 = ( )10 0
10、Xff = ( )10,3.3 整型数据,返回,整型常量的类型 根据其值所在范围确定其数据类型 在整常量后加字母l或L,认为它是long int 型常量,例 12 与 12L,整型变量 整型变量在内存中以二进制的形式存放 根据占用的字节数不同,分为不同类别,整型变量的定义,整型变量定义举例: int a,b; unsigned short c,d; long e, f;,例: 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 = %dn”,c, d); ,运行结果:a+u
11、 = 22, b+u = -14,整型数据在内存中是以补码表示的。(参见教材P41),整数类型存储方式,例如: 求-10的补码表示(假如按16位存储)。,-10的原码,1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0,除符号位外各位取反,1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1,末位加1,1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0,则得到-10的二进制补码的表示。,整数类型溢出举例(P21-例2.2),#include void main() int a,b; a=2147483647; b=a+1; printf(%d,%d,a,b);
12、 ,运行结果,改为2147483646,2147483646 2147483647,运行结果,2147483647 -2147483648,实型数据 实型常量 表示形式: 十进制数形式:(必须有小数点) 指数形式:(e或E之前必须有数字;指数必须为整数) 实型常量的整数部分为时可以省略,且E或e后面指数必须为整数。,十进制数形式实型常量 0.123, .123, 123.0, 0.0, 123.,指数形式实型常量 12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 , .e3,3.4 实型数据,返回,实型数据 实型常量 规范化的指数形式: 即在字母e(或)之前的数据部
13、分中,小数点左边有 且仅有一位非零的数字。,指数形式实型常量 12.3e3 ,123E2, 1.23e4 , 0.123e-3,实型常量的类型 实型常量部分float和double型,一个实型常量可以赋给一个float型或double型变量。根据变量的类型截取实型常量中相应的有效数字。,实型变量 float: 占4字节,提供7位有效数字 double:占8字节,提供1516位有效数字,基本数据类型,数据属于不同类别,Africa,The quick brown fox,TRUE,数据,非数值,数值,整型,非整型,9002.12,999,9/12/2003,2.175,123,Jackie Ch
14、an,char,数据类型,非数值,数值,整型,int,short int,long int,double,float,非整型,3.5 字符型数据,字符常量 字符变量 字符串常量,返回,字符常量 定义:用单引号括起来的单个普通字符或转义字符。 字符常量的值:该字符的ASCII码值 转义字符:反斜线后面跟一个字符或一个代码值表示,如 a A ? n 101,如 A65, a97, 048 , n10,如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例: A-101-x41-65,例 转义字符举例(ch2_001.c,ch2_004.c) main() prin
15、tf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C); ,运行结果:(屏幕显示) A B C Isay:”How are you?” C Program Turbo C,例 main() printf(“Yb=n”); ,运行结果: 屏幕显示:= 打印机输出:,注意事项: 单撇号中的字符不能是或者 一个字符占一个字节,存其对应的ASCII码 思考:9和9的区别 字符型数据可像证书一样在程序中参与相关的运算,a 32 结果为65,字符变量 字符变量存放字符ASCII码 char与int数据
16、间可进行算术运算,例1 a=D; /* a=68; */ x=A+5; /* x=65+5;*/ s=!+G /* s=33+71;*/,例2 字符变量的字符形式输出和整数形式输出。 #include void main() char ch1,ch2; ch1=a; ch2=b; printf(ch1=%c,ch2=%cn,ch1,ch2); printf(ch1=%d,ch2=%dn,ch1,ch2); ,字符类型举例2,一个字符型数据,既可以字符形式输出,也可以整数形式输出,ch1=a,ch2=bch1=97,ch2=98,程序运行结果:,/*ch2_003.c*/ #define PRI
17、CE 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,例子,字符串常量 定义:用双引号(“”)括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字符串结束标志 字符常量与字符串常量不同,例: char ch; ch=“A”;,没有字符串变量,用字符数组存放,思考?,1、 字符串常量How do you do.和Good morning.的长
18、度分别是多少?,2、 字符串C:msdosv6.22和I say: Goodbye! 在C语言中的字符串常量形式如何表示?,3、 字符串CHINA在内存中的实际存储形式是怎样的?占用多少个字节的内存空间?,14和13,C:msdosv6.22和I say:Goodbye!,占用字节而非字节内存空间,总结:字符与字符串的区别有哪些?,定界符不同:字符常量使用单引号,而字符串常量使用双引号; 长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数; 存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志0。,3.7
19、各类数值型数据间的混合运算,隐式转换 什么情况下发生 运算转换-不同类型数据混合运算时 赋值转换-把一个值赋给与其类型不同的变量时 输出转换-输出时转换成指定的输出格式 函数调用转换-实参与形参类型不一致时转换,a 32,int age; age = 11.1,char name=a; printf(“%dn”,name);,返回,运算转换规则:不同类型数据运算时先自动转换成同一类型。,1、纵向向上的箭头表示不同类型的 转换方向(由低类型转化为高类 型),不表示转换所经的步骤。 2、横向向左的箭头表示必须的转换。,int i; float f; double d; long e; i=2; f
20、=2.5; d=3.9; e=3; ,10+a+i*f-d/e,int,double,double,double,double,思考:根据已知变量定义及赋值语句,计算以下表达式的值,并说明每一步所得结果的数据类型。,char ch; int i; float f; double d;,ch/i + f*d - (f+i),例,显示转换 可以利用强制类型转换将一个表达式转换成所需类型 一般形式:(类型名)(表达式) 例: (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变,例 main() float x;
21、int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); ,精度损失问题,结果:x=3.600000,i=3,#include void main() float x; int i; x=3.6; i=(int)x; printf(x=%f,i=%d,x,i); ,思考:以下程序的输出结果是什么?,x=3.600000,i=3,程序运行结果:,结论:较高类型向较低类型转换时可能发生精度损失问题,举例:已知三角形的边长a、b、c,求三角形周长的一半。,#include void main() float a,b,c,s; a=3;b=4;c=5; s=1/
22、2 * (a+b+c); printf(s=%8.2f,s); ,s= 0.00,程序运行结果:,?,s= 6.00,程序运行结果:,改为:1.0/2 (1/2.0) 或 (float)1/2 (1/(float)2),3.8 算术运算符和算术表达式,C运算符简介,学习运算符应注意 运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型,返回,基本的算术运算符 +加法运算或正值运算符 -减法运算或负值运算符 *乘法运算符 /除法运算符,求商,两个整数相除结果为整数 %模运算符,求余,要求两则均为整型数据,3+5、+3,5-2、-3,3*5,5/3,7%4
23、,算术运算符和算术表达式,基本算术运算符,+ - * / %,说明,例: 5/3=1 -5/3=-1,模运算符或求余运算符,算术表达式,用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子。,优先级和结合性,先乘除、后加减,有括号先算括号。 自左至右,常量、变量、函数等,说明,如果一个运算符两侧的数据类型不同,先自动进行类型转换,使二者具有同一类型,然后进行运算。,两个整数相除的结果为整数,舍去小数部分。 当商为负数时,多采用“向零取整”的方法。,求余运算的两侧均应为整数 例:5%3=2,例: a*b/c-1.5+a,例 5/2 = -5/2.0 =,例 5%2 = -5
24、%2 = 5%-2 = 1%10 = 5%1 = 5.5%2,2,-2.5,1,-1,1,0,(),1,取模的余数符号由分子(被除数决定),自增、自减运算符,作用:自增运算符()使单个变量的值增1; 自减运算符()使单个变量的值减1。,例,i=3; A) j=+i; j=i+; j=-i+;,i=i+1,i=i-1,? j,i,A) j=4 i=4 j=3 i=4 j=-3 i=4,格式: 前置:+i , -i (在使用i之前,使i的值加(减)1) 后置:i+ , i- (在使用i之后,使i的值加(减)1),+和-结合方向 是“自右至左”,例,i=3; A) c=(i+)+(i+); B) a
25、=i+; b=i+; c=a+b;,? c, i,A) c=6 i=5 B) c=7 i=5,两处i值都为3,例,自左而右组合,例 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,自增、自减运算符,注意说明: 只能用于变量,不能用于常量或表达式; 结合方向“自右向左”; 优先级别: - - + - - * / % - + - 自增(减)运算常用于循环语句
26、中循环变量自动加(减)1或指针变量,使指针指向下一个地址 表达式中包含多个自加、自减运算时,很容易出错,5+ () (a+b)+ () i+ (),例1解答: -i+ -(i+) i=3; printf(“%d”,-i+); /-3,例1: -i+ i=3; printf(“%d”,-i+);,i+j,应如何结合? 调用函数时,实参数地求值顺序,c并无统一规定,3.9 赋值运算符和赋值表达式,简单赋值运算符“” 作用:将一个数据赋给一个变量,常量或表达式,只能是变量,不能是常量或表达式,例 3=x-2*y; a+b=3;,例 a3; a(a+b)*c,返回,赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型,例1 float f; int i; i=10; f=i; 则 f=10.0,例2 int i; i=2.56; /结果i=2;,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 提高救助资金管理办法
- 丝路美食基因库行业产业链分析
- 放宽出境旅游管理办法
- 政务外网安全管理办法
- 新旧汽车销售管理办法
- 新进医师考核管理办法
- 脊椎损伤病人的护理
- 欠缴海域使用金管理办法
- 武汉三环内货车管理办法
- 结肠癌病史护理查房
- 环境卫生管理方案
- 中国居民投资理财行为调研报告2024-高金智库x蚂蚁理财智库-202412
- 投资咨询业可持续发展策略-洞察分析
- 天立中学招生测试卷
- 电影《白日梦想家》课件
- 北京市昌平区2023-2024学年八年级上学期期末语文试题(解析版)
- 实验活动2 水的组成及变化的探究说课稿-2024-2025学年九年级化学人教版(2024)上册
- 网络舆情分析操作手册
- 2024年《认识大熊猫》课件:大熊猫保护的明天
- 团员发展纪实簿
- DB11-T 1952-2022 地理国情监测技术规程
评论
0/150
提交评论