003-数据类型与运算规则B.ppt_第1页
003-数据类型与运算规则B.ppt_第2页
003-数据类型与运算规则B.ppt_第3页
003-数据类型与运算规则B.ppt_第4页
003-数据类型与运算规则B.ppt_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

数据类型与运算规则 2 第3章 数据类型与运算规则 什么是语言规则,为什么要用语言规则? l 常量 l 变量 l 运算 符 l 表达 式 l 函数 我们人能明白的、用自然语言和数我们人能明白的、用自然语言和数 学语言描述的问题学语言描述的问题 计算机能明白计算机能明白 的、的、C C语言语法规则描述的问题语言语法规则描述的问题 表达式 常量 变量 函数 程序设计语言的程序设计语言的 基本规则包括:基本规则包括: 3 第3章 数据类型与运算规则 数据与数据类型 C语言的基本数据类型 算术运算与赋值运算 关系运算与逻辑运算 位运算 其它运算 混合运算及数据类型转换 数据的 描述规则 数据的 运算规则 4 + - * / % = = + - c-; 6 第3章 数据类型与运算规则 数据与数据类型 C语言的基本数据类型 算术运算与赋值运算 关系运算与逻辑运算 位运算 其它运算 混合运算及数据类型转换 7 3.3 算术运算与赋值运算 语言中的运算规则 运算分量 运算符 x = 5 + b * c 对数据进行 运算的符号 被加工 的数据 表达式 + = 在计算机语言中,所有的运算都是照事先 规定的规则进行的,运算的操作规则,包括 运算符、表达式和运算过程。 8 3.3 算术运算与赋值运算 表达式的运算结果称为表达式的值 C中运算符 算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算 逗号运算符 条件运算符 . 运算符和运算分量构成表达式 9 3.3 算术运算与赋值运算 学习运算符应掌握的要点: q 运算符的种类与功能 q 运算符与运算分量的关系 个数 类型 A+B (ab) ? a: b 目目 单目运算 双目运算 三目运算 关系 不同类型的变量,所占存储空 间、数的表示范围、有效位和 允许的操作不同 10 3.3 算术运算与赋值运算 a+b-c 572 a=b=5 右结合 左结合 x=a+b*c q 优先级:运算符的执行顺序 单目运算符的优先级通常高于双目和三 目运算符 q 结合性:相同优先级的多个运算符的运 算顺序 单目/三目运算符 通常是右结合, 双目运算符通常 是左结合(赋值运算符除外) 11 3.3 算术运算与赋值运算 q 运算结果的类型 整型 逻辑型 x = 5+8 a 100 13加法运算的结果 q 表达式的值即运算结果的值 关系运算的结果 赋值运算的结果? 0 13 12 3.3 算术运算与赋值运算 2算术运算符和算术表达式 +加法运算、正 值运算 -减法运算、负 值运算 *乘法运算 /除法运算 %求余运算 (结合性 ) 1. 1. 参加运算的对象都是参加运算的对象都是intint型,型, 其结果截取为其结果截取为intint型型 10/3 11/3 1/210/3 11/3 1/2 10.0/310.0/31./21./2 10/5*310/5*3 10/(5*3)10/(5*3) 2. 2. 求余运算的对象求余运算的对象必须必须是整型是整型 10 % 3 9 % 3 10 % 3 9 % 3 10 % 3 10 % 10 % 3 10 % 3 3 (12) (13) 13 3.3 算术运算与赋值运算 例 10 / 3 11 / 3 1 / 2 1. / 2 10.0 / 3 10 / 5*3 10 / (5*3) 10 % 3 9 % 3 -10 % 3 10 % -3 -10 % -3 3 3 0 0.500000 3.333333 6 0 1 0 -1 1 -1 14 3.3 算术运算与赋值运算 q 算术表达式 C语言的算术表达式由算术运算符、常 量、变量、函数和圆括号组成,例如: 3+5 12.34-23.65*2 -5*(18%4+6) x/(67-(12+y)*a) 15 3.3 算术运算与赋值运算 使用算术表达式时应注意: q 双目运算符两侧运算对象的类型必须一致, 所得结果的类型与运算对象的类型一致。如 果类型不一致,系统将自动按转换规律先对 操作对象进行转换,然后再进行相应的运算 。 q 用括号可以改变表达式的运算顺序,左右括 号必须配对,多层括号都用圆括号“()”表示 ,运算时先计算内括号中表达式的值,再计 算外括号中表达式的值。 16 3.3 算术运算与赋值运算 例:将下列数学表达式: 写成符合C语语言规则规则 的表达式如下: (a+b+c)/(sqrt(a)+b*( sin(x)+sin(y)+sin(z) 其中(sqrt(a)和sin(x)、sin(y)、sin(z)都是 数学函数的引用,表达式中用了三层括号, 以保证表达式的运算顺序。 17 3.3 算术运算与赋值运算 3自增自减运算 变量自身加(减)1 优先级(14) k = k+1 k+ 先使用变量k的值,k再加1 +k k先加1,再使用变量k的值 k = k -1 k- - 先使用变量k 的值,k再减1 - - k k先减1,再使用变量k 的值 18 3.3 算术运算与赋值运算 自增、自减运算符只能用于 变量,不能用于表达式和常量 q 优先级:高于双目算术运算符 q 结合性:从右向左 (k+i) + , - - 3 k=3; printf(“%d”,k+); 输出3后,k的值为4 k=3; printf(“%d”,+k); 输出4后,k的值为4 自增、自减运算是 对变量进行加1或 减1操作后再对变 量赋新的值,表达 式和常量不能进行 赋值操作。 k=6; n=-k+; n? k? 19 3.3 算术运算与赋值运算 思考 int n = 6; printf(“%d,n=%dn“,-n+,n); printf(“n=%dn“,n); printf(“n=%d,%dn“,n,-n+); printf(“n=%dn“,n); printf(“%d,n=%dn“,-+n,n); printf(“n=%dn“,n); -6,n=6 n=7 -7,n=6 n=7 n=7,-6 n=7 20 3.3 算术运算与赋值运算 main() int a , b , s ; a=5 ; b = 5 ; s=a+b; printf(“%d,%d,%dn”,a,b,s); s=a+ +b;printf(“%d,%d,%dn”,a,b,s); s=+a+b; printf(“%d,%d,%dn”,a,b,s); s=-a+b; printf(“%d,%d,%dn”,a,b,s); s=a-+b; printf(“%d,%d,%dn”,a,b,s); s=a+b; printf(“%d,%d,%dn”,a,b,s); s=a+b 优先级? s=a+ +b s=a+ +b s=a+(+b) 21 3.3 算术运算与赋值运算 s = a +b ; s = a+ +b ; s = +a +b ; s = - -a +b ; s = a- - +b ; s = a +b ; a=5,b=5 5+5=10 5+5=10 7+5=12 6+5=11 6+5=11 5+5=10 a b s 5 5 10 6 5 10 7 5 12 6 5 11 5 5 11 5 5 10 题目分析: a 22 3.3 算术运算与赋值运算 int a=2,b=1; a+=+b; b=a+b+; k=2; i=k+ + k+; k=2; i=+k+(+k); k=4 i=4 k=4 i=8 a=4,b=2 b=a+b,b+a=4,b=7 23 3.3 算术运算与赋值运算 main() int k=2,i; i=(k+)+(k+)+(k+); printf(“i=%d,k=%dn“,i,k); k=2; i=(+k)+(+k)+(+k); printf(“i=%d,k=%dn“,i,k); TC i=6,k=5 i=15,k=5 i=13,k=5 DC 24 3.3 算术运算与赋值运算 4赋值运算符和赋值表达式 将一个常量、一个变量或 一个表达式的值赋给一个 变量 x = 5 y = x + 10 q 赋值运算符 a+b=12 a+1=12 25 3.3 算术运算与赋值运算 可以将一个实型赋给一个整型 也可将一个整型赋给一个实型 类型转换中的 “赋值转换” 接受赋值的变量类型决定了运算结果的存储类型 int x; x=5.3; x的值为 5 float y; y=5; y的值为 5.000000 26 3.3 算术运算与赋值运算 n 复合的赋值运算 n 赋值运算的优先级 (2) n 赋值运算的结合性 比算术运算低,只比逗号运算高 从右向左x = y = 5 x=x+n x+=n 赋值运算符两侧 出现相同的变量 int a=b=5; int a,b; a=b=5; 27 3.3 算术运算与赋值运算 x=x+n x=x-n x=x*n x=x/n x=x%n x + = n x - = n x * = n x / = n x% = n 算术运算与赋 值运算相结合 x与n均为整数 28 3.3 算术运算与赋值运算 q 赋值表达式 变量名 = 表达式 求解过程: (1) 先计算右边表达式的值; (2) 将计算结果赋给左边的变量。 例例: : a*=b+5a=a*b+5 ? a=a*(b+5) a=b+5 29 3.3 算术运算与赋值运算 赋值表达式的值 int a,b; a=b=85; if (a=100) if (a=100) 30 第3章 数据类型与运算规则 数据与数据类型 C语言的基本数据类型 算术运算与赋值运算 关系运算与逻辑运算 位运算 其它运算 混合运算及数据类型转换 31 3.4 关系运算与逻辑运算 q计算机具有逻辑判断能力,其判断的依据是计 算机内部进行逻辑运算的结果。C提供了关系 运算和逻辑运算,用来构造C程序控制中的条 件,实现程序的选择结构和循环结构控制。 q关系运算和逻辑运算的结果都是逻辑值,即“真 ”和“假”。 C语言中没有专用的逻辑值,用整数 值1和0标识逻辑真和假。在C语言中,将非0就 视为“真”。 32 3.4 关系运算与逻辑运算 关系运算符与关系表达式 q 关系运算符 关系运算是一种比较运算,将两个值(表达式) 进行比较,判断比较的结果是否符合给定的条件 大于 , 大于等于=,小于 ,=,bc 33 3.4 关系运算与逻辑运算 q 关系表达式 关系表达式的结果是一个逻辑值, 根据关系是否满足分别取真1或假0 结果:2 e1 关系运算符 e2 100=1 3.5c 5*18=90 (int)2.5!=2.5 int i=1,j=7,a; a=i+(j%4!=0) a的值? 例: 34 3.4 关系运算与逻辑运算 例: int main() float a=1.1, b; b=a/2.0; b=b*2.0; if (b=1.1) printf (“b=an”); else printf(“b!=an”); return 0; 不要用=判断两个 浮点数是否相等, 而是: | a b | b) ab (y|b) y|b 例:a=5,b=7,c=4,d=3 x=(a+b)(c+d) s1=(ab) s2=ab s3=(y|b) s4=y|b s5=!a|ab; s6=a=10 printf(“x=%dn“,x); s7=a=10|y|x+; printf(“x=%dn“,x); s8=+a|y printf(“s1=%d,s2=%d,s3=%d,s4=%d,s5=%dn“, s1,s2,s3,s4,s5); printf(“s6=%d,s7=%d,s8=%dn“,s6,s7,s8); printf(“x=%d,a=%dn“,x,a); v 练习 41 3.4 关系运算与逻辑运算 v 练习:用C语言描述 1) a小于b或小于c,但a和b都大于d 2) a和b中有一个大于c 3) a是非正整数 4) a是奇数 5) a不能被b整除 6) a是带小数的正数,b是带小数的负数 如何表示闰年 能够被4整除同时不能被100整除 能够被400整除 或 42 3.4 关系运算与逻辑运算 3条件运算符与条件表达式 例:符号函数sign的数学定义如下: 对应的C函数定义如下: double sign (double x) return x0 ? 1:(x=0 ? 0:-1); 43 3.4 关系运算与逻辑运算 q 条件运算符唯一的三目运算符 e1 ? e2 : e3 判断表达式1的值,若为非0(真),将表 达式2的值作为整个条件表达式的结果 ;否则,将表达式3的值作为整个表达 式的结果 。 n 功能: x=(ab)?a:b 当 a=9,b=5时,条件表达式的值为9,x=9 注意:e2、e3不是都要计算。 44 3.4 关系运算与逻辑运算 高于赋值,低于其它(3)n 优先级: n 结合性:从右向左 a=5,b=4,c=3,d=2 x=(ab)?a:(ad)?c:d x=(ab)? a : (ad)?c:d) x=(ab)?a:(ad) ? c:d n 数据类型可以不同 45 3.4 关系运算与逻辑运算 if语句与条件运算的关系 例:求一个数字的绝对值 if (y按位右移双目左(11) 结结果为为:y=-7, y=!x; 结结果为为:y=0。 53 3.5 位运算 4移位运算 x n C语言提供了两个移位运算:左移和右移,它们 是把整数作为二进制位序列,求出把这个序列左 移若干位或者右移若干位所得到的序列。 其中x为移位运算对象,是要被移位的量;n是要 移动的位数。数据左移后空出来的位置补0,右移后 对无符号数补0,有符号数正数补0,负数补1。 a: 1101,0011 b=a2: 0001,0011

温馨提示

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

评论

0/150

提交评论