1
C/C ++程序设计
1.2.3.3 3.3 关系运算符

3.3 关系运算符

关系运算也称为比较运算,用来比较两个表达式的大小关系,是双目运算符,运算结果只能是1或者0,如表3-4所示。如果两个表达式值相同,比较结果是1;如果不同,比较结果是0。

表3-4 关系运算符

img51

举例如下:

(1)整数比较

a=1,b=2;

a>b;

两个数值的比较,结果为0。

(2)字符比较

ˊaˊ<ˊbˊ+ˊcˊ;

“<”左边的字符型转换为整数97,“<”右边需要求算术运算和,字符ˊbˊ和ˊcˊ分别由字符型隐式的转换为整型98和99,求和结果为197,表达式转换为求97<197,运算结果是1。

(3)关系运算符连用比较

a=1,b=2,c=0,d=4;

a>b>=c>d;

运算符优先级相同的情况下按照从左至右依次计算。先计算a>b的值为0,然后计算0>=c,比较结果为1,最后计算1>4,比较结果为0,故整个表达式结果为0。

注意:

如果要判断条件c是否大于a并且小于b,下面的写法是错误的:

a<c<b;

根据关系运算符从左至右的结合性,首先比较a和c的关系,如果c大于a,表达式结果是1,接下来再比较1和b的关系,并非比较的c和b的大小关系。正确的写法如下所示:

c>a&&c<b;

运算符“&&”是逻辑与运算符,将在下一节讲到,它表示只有其两边的表达式都成立,整个表达式才成立。表达式只有在c大于a且c小于b时,结果才是1,如果任何一个条件不成立结果都是0。

(4)浮点数比较

关系运算符的操作数可以是任何基本数据类型的数据,但由于浮点数在计算机中只能近似地表示某一个数,一般不直接进行比较。当需要对两个实数进行相等和不等比较时,合理的做法是指定一个极小的精度值,若两实数的差在这个精度之内时,就认为两实数相等,否则为不等。对下面两个表达式分析一下:

①判断x和y相等

合理的写法:fabs(x-y)<1e-6;

不合理的写法:x==y;

②判断x和y不相等

合理的写法:fabs(x-y)>1e-6;

不合理的写法:x!=y;

函数fabs(x)是求double类型数据的绝对值,使用时需要包含头文件<math.h>。fabs(x-y)<1e-6表示x和y的差的绝对值小于0.000001(可根据用户需要调整精度)。

提示:

关系运算符的等于运算是由两个等号“==”组成,不要误写为赋值运算符“=”。