VC运算符表达式输入输出.ppt_第1页
VC运算符表达式输入输出.ppt_第2页
VC运算符表达式输入输出.ppt_第3页
VC运算符表达式输入输出.ppt_第4页
VC运算符表达式输入输出.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

PROGRAM DESIGN IN Visual C+,李骏扬 J,第二讲 VC+运算符 表达式 输入输出,VC+ 运算符 表达式,表达式,表达式能够求出一个式子的值 例如:3+3,iA * iB, fAllMoney = iPersonCount * fMoney 表达式由若干变量、常量和运算符组成。,运算符,算术运算符:+ - * / % 关系运算符: = & | 递增运算符:+ - sizeof 赋值运算符:= += /= *= %= 三目运算符:? : 逗号运算符:,赋值运算和赋值符号“=”,有赋值符号“=”的表达式叫做赋值表达式。 赋值表达式是将“=”右边的值传递给“=”左边的变量。 赋值符号左边必须是一个变量,右边是一个运算式。 赋值符号并不是表示左右相等关系。 赋值运算的结果就是左边变量的结果。,赋值符号“=”的运用举例,int iA = 3; iB = 4; int iC = iA + iB; cout “iC = “ iC; iIndex = iIndex + 1,符号运算表达式,- 负号 + 正号(一般省略) 例如: int iA = +3; int iA0 = 3; int iB = -4; int iC = -22;,算术运算表达式,+:加号 int iA = 4; iB = 5; iC = 0; iC = iA + iB; cout iC; int iA = 4; iB = 5; int iC = iA + iB; cout iC;,算术运算表达式,- 减号 iC = iA iB; * 乘号 iC = iA * iB; / 除号 iC = iA / iB;,% 取模/取余数 7 % 3 = 1 11 % 4 = 3 int iA = 43; int iB = 10; int iC = iA / iB; cout iC; 输出:3,算术运算表达式,对于char的算术运算,规律两条: 在进行算术运算时,char类型相当于一个整数,范围-128127,unsigned char的范围是0255 在用cout输出时,显示在屏幕上的是ASCII字符 char cExample = 68; cout cExample; 输出:D,char类型运算的举例,#include void main(void) char cA = A, cB = 0; cA = cA + 3; char cC = cA + cB; int iA = cA; int iB = cB; int iC = cC; cout iA iB iC endl; cout cA cB cC endl; ,混合运算的算术表达式,int iA = 3; int iB = 4; int iC = 7; int iD = iA + iB * iC;,由混合运算引发的问题:,在运算符的两边从左往右计算还是从右往左计算 例如:为什么总是先运算等号右边的部分 又如:iA = iB = iC; /这是什么东西? 是否有先乘除,后加减?运算优先级,运算符的左结合和右结合,右结合:先计算运算符的左边的值,再计算运算符右边的值,最后运算该运算的结果。如:+ - * / % 左结合:先计算运算符的右边的值,再计算运算符左边的值,最后运算该运算的结果。如:= += -= *= /= %=,算术运算符优先级,*、/、%的优先级高于+、-号。 同级优先级的运算按照结合的左右方向计算。 优先级有差异的运算之间先运算优先级高的运算。,打破优先级的束缚括号的使用,括号“(”和“)”也是运算符 括号的优先级最高,所以总是先运算括号内的子表达式 例如: 3*(X+Y) int iA = 0 ,iB = 0, iC = 0; iC = (iA = 3) + (iB = 4);,多多的使用括号,括号可以冗余,可以使表达式结构清晰 应急:当你忘记运算符之间的优先级时 使用括号。 不用括号的复杂表达式是垃圾表达式, 例如: x = a + b c & c +(书后习题) 为了应付考试,我们必须学会分析垃圾表达式,但是不建议大家在实际操作中使用垃圾表达式。,算术运算符操作数的类型,相同类型数据运算 char char char int int int float float float double double double,算术运算符操作数的类型,不相同类型数据运算 char int int int float float int double double float double double,赋值时的自动类型转换,赋值时,计算所得值将自动更改与赋值符号左边的变量类型 长类型短类型 浮点数整数:去掉小数部分。如果原浮点数超出了整数的取值范围,则出错。 长整数短整数:若超出短整数的范围,出错。若是负数,最高位符号保留。,赋值时的自动类型转换,短类型长类型 整数浮点数:没有问题。 短整数长整数:需要高位补足,方法是用短整数的最高位来补足,以正确转换负数。 无符号数与有符号数 一般没有问题。 当超出表示范围,会出错。,类型转换对数值带来的影响,遵循尽量不改变原数值得原则 特别注意转换前后数值精度的变化 当原数的大小超出转换后数据类型的表示范围,则转换后数据有误。 表示长度带来的溢出。 有无符号带来的溢出。,算术运算的溢出问题,因为相同类型的变量运算后仍然是该类型,所以可能导致溢出。 例如: int iA = 20000; int iB = 300; int iC = iA * iB /溢出 又如: char cA = 200; char cB = 100; int iC = cA + cB /溢出!,解决溢出的方法强行类型转换,语法: () 或: () 转换方法和规则同自动转换相同 例如:int iA = 3, iB = 4; float iC = (float)iA / iB;,强行类型转换解决溢出问题,_int8 iA8 = 200; _int8 iB8 = 100; _int16 iC16 = (_int16)iA8 * iB8;,强行类型转换解决精度问题,整除: int iA = 3, iB = 4; cout iA / iB endl; 结果:0 整数和整数的除法要得到小数 cout (float)iA / iB endl; 结果:0.75,赋值运算表达式,= 赋值 += A += B 相当于 A = A + B = A = B 相当于 A = A B *= A *= B 相当于 A = A * B /= A /= B 相当于 A = A / B,运算符的元/目,元/目:对于一个运算符,参与运算的参数的个数。 +/-号:一元运算符 + - * / % :二元运算符,赋值运算表达式,所有的赋值运算符都是左结合的 赋值表达式的运算结果就执行赋值后是赋值运算符左边变量的值。 例如:执行 iA = iB = iC 由于“=”是左结合的,先运算iB = iC,于是将iC赋值给iB 然后将iB = iC的运算结果(即iB)赋值给iA,赋值表达运算式举例,a = 2, b = 3 计算 a += b += a *= b a *= b : a 6,结果 6 b += (a*=b): b 9,结果9 a += (b += a *= b) a 15,结果15,关系运表达式, 大于 = 大于等于 = 等于 != 不等于,关系运算的结果,对于char类型,看作是数字进行比较。 如果关系式是成立的,运算结果是 1。 如果关系式不成立,运算结果是 0。 例如: iE = (a = A) 运算结果:iE = 0 iA = 3; iB = 5; iE = (iB = iA) 运算结果:iE = 1,浮点数的等值比较,由于浮点数(float, double)在计算中的表示有一个精度问题,所以经过一系列运算,可能理论值是1,但实际结果可能是0.999999和1.000001,在比较fA 和 fB时,可以使用fabs(fA - fB) 1E-6 fabs函数:求浮点数的绝对值,包含在math.h中。,逻辑运算符,! 逻辑非 左结合 & 逻辑与 右结合 | 逻辑或 右结合 表示“ABC”:A B & B C 表示B在(A, C)区间之外:B = C | B = A 表示AB:A != B 或者 ! (A = B),二进制位操作, 按位取反,一元 右移,二元 & 按位与,二元 | 按位或,二元 按位异或,二元

温馨提示

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

评论

0/150

提交评论