>(大于) <(小于) (大于等于 (小于等于 (等于) !=(不等于) 注意 等于运算符==为连续两个等于号,主要为区别赋值 运算符=。在作相等判断时经常只写一个=,把相等判断 作为赋值运算,且不易发现。如i(x=7)错写成if(x-7), 原因是赋值会产生一个值
6 > (大于) < (小于) >= (大于等于) <= (小于等于) == (等于) != (不等于) 注意: 等于运算符 = = 为连续两个等于号,主要为区别赋值 运算符 = 。 在作相等判断时经常只写一个 = ,把相等判断 作为赋值运算, 且不易发现。如 if ( x==7 ) 错写成if ( x=7) , 原因是赋值会产生一个值
2、关系运算符的优先级和结合性 优先级: (高) 相同 (低)==! 相同 它们的优先级高于赋值运算符,低于算术运算符。 结合性:自左向右 3、关系表达式 由关系运算符、操作数(各种表达式)及小括号 组成的运算式
7 2 、关系运算符的优先级和结合性 优先级: (高) < > <= >= 相同 (低) = = != 相同 它们的优先级高于赋值运算符, 低于算术运算符。 结合性: 自左向右 3、关系表达式 由关系运算符 、操作数(各种表达式)及小括号 组成的运算式
例如: a>3“a<b’a>b!=ba=b<c(正确) a>b=c(错误)应写成a>(b=c) 关系表达式的值 关系表达式的值是逻辑值(真或假)。 条件成立时其值为1 条件不成立时其值为0 结果类型为:int C语言无逻辑型数据,非0为真,0为假。所以任 何表达式都可作条件,因它们都有值 两个操作数的类型不同时,自动转换成相同类型后 再进行比较
8 例如: a>3 ‘a’<‘b’ a>b!=b a==b<c (正确) a>b=c (错误) 应写成 a>(b=c) 关系表达式的值: 关系表达式的值是逻辑值(真或假)。 条件成立时其值为 1 条件不成立时其值为 0 结果类型为: int 两个操作数的类型不同时 , 自动转换成相 同类型后 再进行比较。 C语言无逻辑型数据 , 非0 为真 , 0 为假。所以任 何表达式都可作条件,因它们都有值
例 已知intx=2,y=1,z=0;判断以下关系表达式的值: X>V+1 >=y+1x>(y=2) 值0) (值1) 值0) (x=0,y=1,z2) (语法错)(值1) (值0) ≥y>x/语法正确,语义错误* (值0)
9 例: 已知 int x=2 , y=1 , z=0; 判断以下关系表达式的值: x>y+1 x>=y+1 x>(y=2) (值0) (值1) (值0) x>y=2 x>y==1 x==(x=0 , y=1 , z=2) (语法错) (值1) (值0) z>y>x /*语法正确,语义错误 */ (值0)
因浮点数的近似表示与计算误差问题,所以应避免对 浮点数做“—″、“!=″运算,理论上相等的两个数,可 能获得不等的比较结果。 若有 float x,a;需要判断:x=a时,通常用: fabs(x-a)<le-6代替。le-6可根据精度要求改变。例如: d=bb-4*a*c if fabs(d )<le-8) b/(2*a); dse if( d>0) 计算两个实数根} else 计算两个复数根}
10 因浮点数的近似表示与计算误差问题,所以应避免对 浮点数做“==”、“!=”运算,理论上相等的两个数,可 能获得不等的比较结果。 若有 float x , a ; 需要判断: x==a 时, 通常用: fabs(x-a)<1e-6 代替 。1e-6 可根据精度要求改变。 例如: d=b*b-4*a*c ; if ( fabs (d ) < 1e-8 ) x = - b / ( 2*a ) ; else if ( d>0 ) { 计算两个实数根 } else { 计算两个复数根 }