C语言中的关系操作符
C语言用于比较的表达式,称为关系表达式(relational expression),里面使用的运算符就称为"关系运算符"(relational operator),主要有下面6个。
>大于运算符>=大于等于运算符<小于运算符<=小于等于运算符==相等运算符!=不相等运算符
下面是一些例子。
a == b;
a != b;
a < b;
a > b;
a >= b;
a <= b;
关系表达式通常返回0或1,表示真假。
C语言中,0表示假,所有非零值表示真。比如,20 > 12返回1,20 > 20返回0。
关系表达式常用于if和while结构。
if (x == 3){
printf("x is 3.\n");
}
注意:相等运算符==与赋值运算符=是两个不一样的运算符,不要混淆。有时候不小心些出下面的代码,它可以运行,但很容易出现意料之外的结果。
if(x = 3)...
上面示例中, 原意是x == 3,但是不小心写成x = 3。这个式子表示对变量x赋值3,它返回值为3,所以if判断总为真。
为了防止出现这种错误,有的程序员喜欢讲变量写在等号的右边。
if(3 == x)...
这样的话,如果把==误写成=,编译器就会报错。
/* 报错 */
if(3 = x)...
另一个需要避免的错误是:多个关系运算符不宜连用。
i < j < k
上面实例中,连续使用两个小于运算符。这是合法表达式,不会报错,但是通常达不到想要的结果,即不是保证变量j的值在i和k之间。因为关系运算符是从左到右计算,所以实际执行的是下面的表达式。
(i < j) < k
上面式子中,i < j返回0或1,所以最终是0或1与变量k进行比较。如果想要判断变量j的值是否在i和k之间,应该使用下面的写法。
i < j && j < k
比如:我们输入一个年龄,如果年龄在18岁~36岁之间,我们输出青年。
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(18<=age && age <= 36)
{
printf("青年\n");
}
return 0;
}