第三章运算符与表达式解析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.5 逻辑运算符和逻辑表达式 1.逻辑运算符 在C语言中,可能会遇到各种复杂的逻辑判断问题。对逻辑量进行的运算称为逻辑运算。逻辑运算符有以下3种: ! 逻辑非,描述的是当一个逻辑量为真(假)时,结果为假(真)的运算。 逻辑与,描述的是当两个逻辑量均为真时,结果为真的运算。 || 逻辑或,描述的是当两个逻辑量中有一个为真时,结果为真的运算。 逻辑量只有两个值:“假”(0)与“真”(非0)。逻辑运算的真值表如表3.4所示,它表示当a和b的值为不同组合时,各种逻辑运算所得到的逻辑值。 表3.4 逻辑运算的真值表 逻辑运算符的优先级是:逻辑非“!”高于逻辑与“”和逻辑或“||”;逻辑与“”高于逻辑或“||”。“!”的优先级高于算术运算符;“”和“||”的优先级低于关系运算符,高于赋值运算符,如下图所示。 “”和“||”是双目运算符,结合方向为左结合型;“!”是单目运算符,结合方向为右结合型。 3.5.2 逻辑表达式 用逻辑运算符将关系表达式或逻辑量(值)连接起来的式子,称为逻辑表达式。逻辑表达式的值为逻辑值,逻辑“真”用1表示,逻辑“假”用0表示。但在判断一个量是否为真时,C语言把任何“非0”的数值都作为“真”,而仅把“0”值作为“假”。 例如: 5384-!0 相当于 (53)(8(4-(!0))) 在此表达式中,“!”运算符的优先级最高,首先计算!0,其值为1;然后计算4-1,其值为3(算术运算符优先级高于关系运算符);再计算53(关系运算符优先级高于逻辑运算符),其值为1;再计算83,其值为0;最后再进行10的运算,结果为0。 对于数学表达式表示取值范围: 例 0x10表示x在0与10之间取值 在C语言程序中表示相同的取值,用此表达式是否成立? 在C语言中此表达式先比较0与x的值,再用其结果比较和10谁大,那么x取任何大于0的值此表达式都成立。 C语言中,要表示x在0与10之间应该写成: 0xx10 相当于(0x)(x10) 所以在作数据范围限定时,不可与数学上的应用等同。 C语言中,由和||组成的逻辑表达式,在特定的情况下会产生一种“短路现象” 例如有以下逻辑表达式: a=0,b=0; a++b++; 计算结果应为00,表达式为0,然后a为1,b为1. 但实际上系统在确定了a++为0之后,判断逻辑表达式b++无论为何值此表达式的结果都为0,因此将跳过b++不在对它进行求值,则此表达式运算完成后会出现a为1,b仍为0的情况。 例如 a=1,b=1;a++||b++; 表达式在运算a++后得出表达式的值总为1,因此也将跳过b++,所以最后的结果a为2,b为1。 3.7 其他运算符 3.7.1 条件运算符 条件运算符“? :”是C语言中唯一的三目运算符,其优先级较低,仅高于赋值运算符,结合方向为右结合型。由它构成的表达式称为条件表达式。其一般形式如下: e1 ? e2 : e3 其中,e1,e2,e3分别是3个任意表达式。若 e1的值为真(非0),则此条件表达式的值为e2的值;若e1的值为假(0),则此条件表达式的值为 e3的值。条件表达式允许嵌套。 【例3.5】输入两个数,求其中的最小值。 程序: 3.7.2 逗号运算符 C语言提供的逗号运算符是一种特殊的运算符,用它连接多个表达式可以构成逗号表达式。其一般形式如下: 表达式1,表达式2,…,表达式n 逗号运算符的优先级最低,结合方向是自左至右。逗号表达式的求解过程是先求解表达式1,再求解表达式2,依次类推,最后求解表达式n。整个逗号表达式的值是最后一个表达式的值,因此逗号运算符又称为“顺序求解运算符”。 由于逗号运算符的级别最低。所以是否带括号,结果是不同的 例如: a=(b=4,b+5) 变量a赋值为9。 赋值运算表达式“a=(b=4,b+5)”中的括号内是逗号表达式,先将4赋给b;然后计算表达式b+5,其值为9,最后将值9赋给变量a。 不带括号: a=b=4,b+5 3.7.4 强制类型转换运算符 可以利用强制类型转换运算符将一个表达式转换成所需要的类型。其一般形式如下: (要转换成的数据类型) (被转换的表达式) 例如: (double)x; /*将x的值强制转换成double类型*/ (int)(x+y); /*将x+y的值强制转换成int型*/ (float)(5%3); /*将5%3的值强制转换成float型*/ 【注意】 被转换的表达式要用括号括起来,否则只转换紧挨在强制类型转换运算

文档评论(0)

335415 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档