C语言关系运算符详解

嵌入式技术

1368人已加入

描述

关系运算符是一个高频考点,往往题目难度不大,但是正确并不是特别高,最主要的原因在于不理解关系运算的优先级和结合性。

关系运算符只有这么几种:

 >、< 、 >=、<=、==、!=

他的比较结果更简单,只有两种结果:

0
1

Printf

参考答案

C

0

1

A

考点解析

  1. 运算符的优先级,这个必须记忆
  2. 关系运算符的优先级
  3. 关系运算的结果

Printf

第一题

关系运算符的优先级,没有算术运算符高,但是比赋值运算符高。

第二题

虽然没有给变量a初始化赋值,但是不影响结果

printf("%d", a + 10 < 20 != 0 == 0 <= a - 10);

在这个表达式中,首先计算a+20,虽然不知道是多少,但是并不影响变量a的值,一直没变。

  • 当a>10,则a + 10 < 20为0,0 <= a - 10为1,a + 10 < 20 != 0为0,a + 10 < 20 != 0 == 0 <= a - 10为0,这就是优先级的作用,先算0 <= a - 10
  • 当a<10,则a + 10 < 20为1,0 <= a - 10 为0,a + 10 < 20 != 0 为1,a + 10 < 20 != 0 == 0 <= a - 10为0

第三题

printf("%d", fabs(1.0/3*3 - 1) <= 1.0E-6);

1.0/3*3 - 1=1.0

fabs(1.0/3*3 - 1)=0

fabs(1.0/3*3 - 1) <= 1.0E-6为1

第四题

a+=b 2>c+5?b+=2:c =2;

等价于

a+=((b 2)>(c+5)?(b+=2):(c =2));

  • b*2为4
  • c+5 为 8
  • a+=b*2>c+5 为 0
  • c*=2 为 c=6
  • a+=b 2>c+5?b+=2:c =2 为a=7

赋值运算符的优先级最低,最后计算

关系运算符的测试程序

#include < stdio.h >
#include < math.h >


int main(){


  int a=1,b=2,c=3; a+=b*2 >c+5?b+=2:c*=2;
  printf("%dn", a);
  printf("%dn", b);
  printf("%dn", c);
  return 0;
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分