C语言的关系运算符

151 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天,点击查看活动详情

while循环经常依赖表达式做比较,这样的表达式称为关系表达式,出现在关系表达式中间的运算符叫做关系运算符

关系运算符的表

运算符含义
<小于
<=小于或等于
==等于
>=大于或等于
!=不等于
>大于

关系运算符常用于构造while语句,这些语句都会检查关系表达式为真还是为假。下面举几个例子包含关系表达式的。

  • 案例1
while(number<6){
printf("Your number is too small.\n");
scanf("%d",&number);
}
  • 案例2
while(ch!='$'){
count++;
scanf("%c",&ch);
}
  • 案例3
while(scanf("%f",&num)==1)
sum=sum+sum;

注意:第2个案例while语句的关系表达式还可以用于比较字符。比较时使用的机器字符码。但是,不能用关系运算符比较字符串。

虽然关系运算符也可以用来比较浮点数,但是要注意:比较浮点数时,尽量只使用<和>。因为浮点数的舍入误差会导致在逻辑上应该相等的两数却不相等。例如,3乘以1/3的积是1.0 。如果用把1/3表示成小数点后面6位数字,乘积则是0.999999,不等于1.使用fabs()函数。例如下面这个例子用这个方法来接近预期结果:

#include <stdio.h>
#include<math.h>
int main(){
    const double ANSWER=3.14159;
    double response;
    printf("What is the value of pi?\n");
    scanf("%1f",&response);
    while(fabs(response-ANSWER)>0.0001){
        printf("Try again!\n");
        scanf("%1f",&response);
    }
    printf("Close enough!\n");
   return 0;
}

大家可以尝试运行一下,循环会一直提示用户继续输入,除非用户输入的值与正确值之间相差0.0001。

什么是真

在C中,表达式一定有一个值,关系表达式也不例外。

通过这个例子来看看表达式的值的真假区别

#include <stdio.h>
int main(){
int true_val,false_val;
ture_val=(10>2);  //关系为真的值
false_val=(10==2);//关系为假的值
printf("true = %d;false=%d\n",ture_val,false_val);
return 0;
}

把表达式为真的值赋给ture_val,表达式为假的值赋给false_val。输出的结果:

turn=1; false=0

对于C语言来说,表达式为真的值是1,表达式为假是0.例如使用while循环结构时,会用1当作判断条件:

while(1){
执行内容;
}