- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言:运算符和表达式
运算符和表达式 逻辑运算 C语言中有三个逻辑运算符,他们是:(逻辑与) ||(逻辑或) !(逻辑非)。 C语言不提供逻辑数据“真”和“假”。在进行关系运算时,凡是结果为“真”的,用1表示,“假”用0表示。在判别时,把“非零”作为“真”,0作为“假”。 逻辑运算的真值 逻辑表达式 逻辑表达式的值应该是一个逻辑量“真”或“假”。 系统给出的逻辑运算结果不是0就是1,不可能是其他数值。而在逻辑表达式中参与逻辑运算的运算对象(操作数)可以是0(“假”)或任何非0的数值(按“真”对待)。可以是0或非0的整数,也可是任何类型的数据。系统最终是以0或非0来判断它们属于“真”或“假”。 在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。 条件运算 在两个表达式的值中选择一个的操作 形式:e1?e2:e3 数据: e1为算术表达式, e2、e3可以是任意类型的表达式,条件表达式的值的类型为e2与e3二者中类型较高的。 操作:若e1为“真”(非0),则此条件表达式的值为e2的值;若e1为“假”(0),则此条件表达式取e3的值; 条件运算符?:三个运算变量,C语言中唯一的三元运算符 关系运算 对两个运算量之间的大小比较 关系运算符: (大于) = (大于等于) (小于) = (小于等于) == (等于) != (不等于) 关系表达式的值:关系表达式成立,即为“真”,C语言中用1表示;关系表达式不成立,即为“假”,C语言中用0表示。 关系表达式的值是整型数0或1,可以将其看成一种整数表达式。 字符比较按ASCII码进行 对浮点数判断是否相等时,由于计算机存储的误差,会出现错误的结果。应避免对两个实数表达式作“相等”或“不相等”的判别。 关系运算级别高于赋值运算,低于算术运算 从左向右结合方式 习题 习题 2、已定义变量a、b、c,请写出表达式进行如下计算: 计算三个变量中的最大值; 计算三个变量的积与三个变量的和之差; 计算a、b之和是否大于b、c之积,大于则结果为真,否则结果为假; 计算方程aX2+bX+c=0是否有解,有解则结果为真,否则结果为假; 习题 3、已定义下列变量, int a; float b; double c; char d; 请判断下列表达式的结果类型: a+ba-c d-b*(ca) d+a*int( c ) a bc || a-cb a/3. – d 2*a + d 习题 4、请计算下列表达式的结果值及各变量的结果值,其中各变量定义如下:int a=10; double b=5; char c=‘2’; a=2, ab*1.5 a + c – ‘5’ b + ( a = c++ - ‘0’ ) ab a=c c-1 夏涛 优先次序: 1 !(非)→(与) →||(或) 2 逻辑运算中的“”和“||”低于关系运算符,“!”高于关系运算符 T F F T T F F T T F F T T F T T F T F F T F T T F F T T !(ab) a||b ab !b !a 数据b 数据a 说明:T:非0值,表示“真” F:0值,表示“假” 表达式1 表达式 2 表达式3 0 假 非0 真 例: ( ab ) ? a : b; 数学上判别x是否在区间[a,b]中时,习惯上写成a?x ?b。 C语言中,a=x=b的含义与数学上不同。 例如:a=0;b=0.5;x=0.3;则a=x=b的值为0(假)。 应该写成:a=x x=b; 表达式5278在数学上是不允许的。 在C语言中是允许的,按自左而右求解。 52值为1;17值为0;08值为0。 表达式的值为0。 对1.0/3.0*3.0==1.0,计算机判为假,改写为:fabs(1.0/3.0*3.0-1.0)1e-5; 1、请写出下列计算式的C语言表达式: 4*a+(x*(2*a-b)/(a/(5*c))-c*(x*y/(d/a)))/((((e-f)/(a*b))*c-f)*(b-e)) 4*a+(x*(2*a-b)/a*5*c-c*x*y/d*a)/((e-f)/a/b*c-f)/(b-e) ab ? ( ac ? a : c ) : ( bc ? b : c ) a*b*c – (a+b+c) a+b b*c (b*b-4*a*c)=0 int int double int
文档评论(0)