关系运算符和关系运算符表达式
通俗地说,关系运算符就是比较运算,即将两个数据进行比较,判定两个数是否符合给定的关系。
关系运算符
<(小于),>(大于),<=,>=,==,!=(不等于)
六种运算符都是双目运算符。关系操作数可以是数值型数据也可以是字符型数据
关系成立:关系运算的值为1(表示逻辑真)
关系不成立:关系运算的值为0(表示逻辑假)
例如:5>3 值为1
5<=3 值为0
5!=3 值为1
注意:浮点数是用近似值表示的。“==”用于两个浮点数的判断是,由于存储误差,会得出错误的结果,要特别注意。
例如:
1.0/3.0*3.0==1.0
由于“1.0/3.0”得到的值用有限位保存,是近似值,所以“1.0/3.0!=1.0”.
判断两个浮点数是否相等,一般采用如下形式的运算
fabs(1-1.0/3.0*3.0)<1e-5 把两个数相减,看绝对值是否是一个很小的数
(1e-5)里的1是一,不是L
关系表达式
1、关系表达式的组成
用关系表达式将两个表达式连接起来,进行运算的式子。
被连接起来的式子可以是:算术表达式,关系表达式,逻辑表达式
a+b>b+c 比较两个算术表达式的值
a<=2*b 比较变量的值和算术表达式的值
'a'<'b' 比较两个字符的ASCII码
(它们都是可以的。关系表达式只能描述单一条件,如“x>=0”).
2、关系运算符的优先级
①<, <=, >, >=为同一级,==和 !=为同一级,其优先级前者高于后者
②关系运算符的优先级低于算术运算符的优先级
a+b>b+c 等价于(a+b)>(b+c)
2+a==b-a 等价于(2+a)==(b-a)
3、 关系运算符的结合律
表达式中出现优先级别为同一级的采用左结合律
例如:
int a=2,b=3,c=1;
a>b<c 先计算a>b,结果是0,再计算0<c,关系表达式的值为1
6>3<2 先计算6>3,结果是1,再计算1<2,关系表达式的值为1
注意,上面的关系表达式与数学的不等式完全不同
逻辑运算符与逻辑运算表达式
进行逻辑判断时,数据的值为非0,则认作逻辑真,用整型1表示;
数据的值为0,则认作逻辑假,用整型0表示
逻辑运算符
&&(逻辑与),||(逻辑或),!(逻辑非)
操作数可以是字符型,整型,浮点型
1、!
是单目运算符。若操作数为0,逻辑运算结果为1;当操作数为非0,逻辑运算结果为0.
2、&&
是双目运算符,当两个参加逻辑运算的操作数均为非0时,结果才为真
int a=5,b=3;
a&&b 结果为1
(a<b)&&(a>0) 结果为0,因为a<b的值为0
3、||
双目运算符,当参加运算的两个操作数,只要有一个值为非0,结果就为1,否则为逻辑假
int a=5,b=3;
a||b 结果为1
(a<b)||(a>0) 结果为1
逻辑表达式
1、构成
用逻辑运算符将表达式连接起来
!(a>b)
(a>b)&&(b>c)
(a>b)&&(b>c)||(b==0)
2、逻辑运算符的优先级
①优先级顺序:!、&&、||
②!高于算术运算符,&&、||低于算术运算符
如:
!a&&b>5 计算顺序为(!a)&&(b>5)
a==b||a<c (a==b)||(a<c)
3、逻辑运算符的结合律
采用左结合律
4、C语言中逻辑表达式的特性
①在多个&&运算符相连的表达式中,计算从左到右,若遇到运算符左边的操作数为0,则停止运算,因为此时已可以断定结果为假
a=0,b=1
c=a&&(b=3)
结果为:c的值为0,b的值为1
由于a为0,逻辑表达式运算停止,b=3没有被运算,赋值符右边表达式的值为0
②在多个||运算相连的表达式中,计算从左到右,若遇到运算符左边的操作数为1,则停止运算,因为此时已经可以断定逻辑表达式结果为真
a=1,b=1,c=0;
d=a||b||(c=b+3)
运算结果:d的值为1,c的值为0
由于a为1,逻辑表达式运算停止,c=b+3没有被运算