欢迎来到天天文库
浏览记录
ID:43742293
大小:482.00 KB
页数:63页
时间:2019-10-13
《第三章 表达式和语句》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第三章表达式和语句表达式是用于表达一个计算过程的操作符、操作数序列。表达式根据某些约定、结合性和优先级、求值次序等规则来进行运算。表达式和语句的区别是:表达式具有一个值,而语句没有值。表达式的左值和右值左值(lvalue):出现在赋值表达式左边的表达式。右值(rvalue):出现在赋值表达式右边的表达式。算符的优先级与结合性操作符优先级决定了在复杂表达式中各操作符执行的先后顺序。C++中规定了各种运算符的结合方向(结合性),算术运算符的结合性为左结合性,而赋值、增量、减量等运算符为右结合性。算术类型转换有关类型的信息只是一种规则:“取x位二进制数并按下面的规定翻译它们……”。某些类型转换是
2、不安全的,如将占存储空间大的类型转换为占存储空间小的类型是一类不安全的转换。longlval;unsignedcharuc;int(3.14159);(signedchar)uc;short(lval);隐式类型转换是由编译器完成的没有程序员人为干预的类型转换,它在不同类型的数据参与同一运算时自动完成。把一个数值赋给一个对象时,系统将该数值的类型转换为对象所具有的类型;把一个数值传给一个函数时,系统将其类型转换为参数所具有的类型。如:voidfun(int);intval=3.14159;fun(3.14159);在算术表达式中,具有较大空间的数据类型成为最终结果转换成的数据类型。charsh
3、ortintlongintUnsignedcharUnsignedshortUnsignedintUnsignedlongdoublefloatlongdouble例1:intval=3;val+3.1415914;val=val+3.1415914;//进行了两次类型转换例2:inti=10;i*=2.3;例3:longm=234*456/6;例4:floatf=3.5;longintn=6;longk=21;doubless=f*n+k/2;显式类型转换形式:type(expr)(type)expr原因:使基本转换不再进行例如:inti;i=i+3.1415914;i=i+int(3.1
4、415914);在有可能存在几种隐式类型转换的情况下,明确地指出使用哪一种类型转换。在引用void*型指针之前,必须先进行显式类型转换。例如:inti;void*vp;int*ip=&i;double*dp;vp=ip;dp=vp;//errordp=(double*)vp;赋值运算符赋值构成一个表达式,它具有值。如:cout<<(x=10);赋值运算可将多个操作数连起来,但应该保证各操作数的类型是一致的。如:inta;floatb;a=b=0;//Warning进行赋值运算时,可能由于右值超出左值的范围而发生溢出现象。如:shortintx=52367;算术运算符运算符功能用法*乘ex
5、pr*expr/除expr/expr%取模(求余)expr%expr+加expr+expr-减expr-expr(1)“/”运算符的两个运算对象均为整数时,其结果是整数。(2)取模运算符“%”要求参加运算的两个数均为整数。(3)遵循算术的自然特性,例如禁止除数为0等;(4)防止数据长度的溢出。算术运算问题2-2整型数的周而复始性,如:unsignedinta=2000000000;unsignedintb=3000000000;cout<6、2000000000;intb=1000000000;A+b=3000000000取补//3000000000-2^32*n=-1294067296中间结果溢出中间结果溢出导致计算错误,如:inta=100000;intb=100000;intc=1000;cout<大于expr>expr>=大于等于expr>=expr==等于expr==expr!=不等于expr!=expr逻辑运算符运算符功能用法!逻辑非!7、expr&&逻辑与expr&&expr8、9、逻辑或expr10、11、expr操作数A操作数BA&&BA12、13、B!A0(false)0(false)0(false)0(false)1(true)0(false)1(true)0(false)1(true)1(true)0(false)0(false)1(true)0(false)1(true)1(true)1(true)1(true)赋值运算符运算符功能用法+
6、2000000000;intb=1000000000;A+b=3000000000取补//3000000000-2^32*n=-1294067296中间结果溢出中间结果溢出导致计算错误,如:inta=100000;intb=100000;intc=1000;cout<大于expr>expr>=大于等于expr>=expr==等于expr==expr!=不等于expr!=expr逻辑运算符运算符功能用法!逻辑非!
7、expr&&逻辑与expr&&expr
8、
9、逻辑或expr
10、
11、expr操作数A操作数BA&&BA
12、
13、B!A0(false)0(false)0(false)0(false)1(true)0(false)1(true)0(false)1(true)1(true)0(false)0(false)1(true)0(false)1(true)1(true)1(true)1(true)赋值运算符运算符功能用法+
此文档下载收益归作者所有