运算符与表达式电子教案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/8/5
• 既然关系运算的结果是一个逻辑值,那么就可以保存在一个逻辑型 bool变量中。例如: bool b = a > 5;
• 由于浮点数在计算机内进行运算和存储时会产生误差,因此在比较两 个浮点数时,建议不要直接比较两数是否相等。例如,执行下面语句 :
double d1 = 3.3333, d2 = 4.4444; if(d1 + d2 == 7.7777) cout<<"相等"<<endl; else{ cout<<"不等"<<endl; cout<<d1 + d2<<endl; }
• 注意,所有非0的值在逻辑上都作为“真”。例如:
cout<<!4 <<endl;
//输出0,假
cout<<!-4 <<endl;
//输出0,假
cout<<!4.1<<endl;
//输出0,假
cout<<!-4.1<<endl;
//输出0,假
• &&和||运算符是双目运算符。运算规则如下:
&&(逻辑与)表示“而且”的语义。
即一个bool值。当关系成立时,其运算结果为真;当关系 不成立时,结果为假。但C语言中没有逻辑型,关系运算 的结果要用一个int值表示,0即为假,1即为真。
a=2 b=3 c=4
a>2
0
a=='a' 0
a>b+c 0
a>'a' 0
a==2
1
b=a==2 1
'a'>'A' b=='a'+1 c-a==a
2020/8/5
• 关系运算符的优先级为(括弧中运算符的优先级相 同):(>、>=、<、<=)高于(==、!=)。关系运算符 的优先级比算术运算符低,但比赋值运算符(=)高 。如:
int a = 5, b = 3, c = 6, d; d = a > b == c; //等价于d = ((a > b) == c); d的 值为0 d = a == b < c; //等价于d = (a ==( b < c)); d的 值为0 d = a > b <= c; //等价于d = ((a > b) <= c); d的 值为1 • 可以使用()来改变运算符的计算次序。
1
2
2*
2020/8/5
运算符
() :: [] . -> ++ -new delete ++ -* & +! ~ sizeof (type) .* ->*
Operator.doc
功能及说明
改变运算优先级 作用域解析、全局 数组下标 访问成员,由指针访问成员 后缀自增、自减运算 动态分配或释放内存 前缀自增、自减运算符 间接访问 dereference 取地址 address-of 正、负号 逻辑非 按位取反 取类型或变量的长度 强制类型转换 由成员指针访问成员
的个数、类型和值都有一定限制。
(3) 运算符的优先级(precedence)。每个运算 符都有确定的优先级。
(4) 运算符的结合性(associativity)。 表3.1给出了C++中的主要运算符的功能、优
先级、目数、结合性。表中按优先级从高到 低分为16个级别。
2020/8/5
基本运算符Hale Waihona Puke Baidu
优先级
//
输出-32768,而不是32768。实际上,观察 二进制数据,这两个值是一样的。
2020/8/5
3.1.2 关系运算 <、<=、>、>=、= =、!= = = 与 = :注意:a=5 赋值运算;a= =5;判断是否相等 a<=x<=b 与 数学上的x取值区间ax b 不同
关系运算的结果是一个表示“真”或“假”的逻辑值,
2020/8/5
3.1.3 逻辑运算符
• 对逻辑值进行运算的运算符就是逻辑运算符。C++语言提 供了3个逻辑运算符,用于表示操作数之间的逻辑关系, 它们是!(逻辑非)、&&(逻辑与)、||(逻辑或)。逻辑运算的结 果仍然是逻辑值。
• 逻辑非(!)是单目运算符,它对操作数进行取反运算。当操 作数为非0(逻辑真)时,!运算后结果为0(逻辑假)。反之 ,若操作数为0(逻辑假),!运算后结果为1(逻辑真)。
第3章 运算符与表达式
运算符(operator)也称为操作符,对程序中的数据进行运 算。参与运算的数据称为操作数(operand)。
变量、字面常量等通过运算符组合成表达式,一个表达式 也能作为操作数来构成更复杂的表达式。
表达式(expression)是构成程序语句的基本要素。
3.1 基本运算符 • 对于运算符,应注意以下几方面。 (1) 运算符的功能和语义。 (2) 运算符的操作数。每个运算符对其操作数
2020/8/5
• 条件语句中用“==”来判断浮点数是否相等,结果 是不等,但d1+d2输出结果却是7.7777。两个实 型数即便输出结果完全一样,其内部值也可能不 一样。判断两个实数是否相等的正确方法是:判 断两个实数之差的绝对值是否小于一个给定的允 许误差数,如判断d1是否等于d2时,应改为: fabs(d1 - d2) <= 1e-6 其中,fabs()是计算绝对值的一个库函数,使用时 要包含头文件math.h。
结合性
左向右
右向左 左向右
目数
双目
单目 双目
3.1.1 算术运算符 + 、- (正号、负号,单目运算) + 、 - 、 *、 / 、 %(双目运算) +、-、*、/ 按通常的算术规定。
注意:
对于除,若两个操作数都是整数,结果为整数(商部分)。
1/2=0
5/2=2
%通常称为取模运算,两个操作数必须都是整型数,结果为 余数,余数的符号与左边数的符号等同。
||(逻辑或)表示“或者”的语义。
2020/8/5
• 例如:
!(2 > 6)
//结果为1,真
7 > 3 && 10 > 6 //结果为1,真
5 > 2 || 4 > 8 //结果为1,真
4 && 5 < 6
//结果为1,真
• 逻辑运算符的运算优先级为:! 高于 && 高于||。 注意,!的优先级具有较高优先级,甚至高于算 术运算符。而&&和||的优先级则比算术运算符和 关系运算符低。
3%2=1 8%4=0
-3%2=-1
3%-2=1
-3%-2=-1
2020/8/5
在算术运算中需要注意溢出问题。
• 两个整数做加法、减法或乘法运算时,即 便结果溢出也不是错误。
例如:short s1 = 32765;
s1 = s1 + 3; short的最大值?
//结果是否超过
cout<<s1<<endl;
相关文档
最新文档