【C语言】C语言期末突击/考研--算术运算符与关系运算符

目录

一、运算符分类

二、算术运算符及算术表达式

三、关系运算符与关系表达式

四、运算符优先级表


你知道5>4&&7<5-!0的最终值是多少吗?今天我们就来学习算术运算符与关系运算符,经过这篇的学习我相信你再回头看这道题目,你可以很快说出正确答案!

一、运算符分类

C语言提供了13种类型的运算符,如下所示:

C语言运算符
1、算术运算符(+ - * / %)
2、关系运算符(< > == >= <= !=)
3、逻辑运算符(!  ||  &&)
4、位运算符(<<  >>  ~  |  ^  &)
5、赋值运算符(=  以及扩展赋值运算符)
6、条件运算符(?:)
7、逗号运算符(,)
8、指针运算符(*和&)
9、求字节数运算符(sizeof)
10、强制类型转换运算符((类型))
11、分量运算符(.  ->)
12、下标运算符([ ])
13、其他(如调用函数运算符())

二、算术运算符及算术表达式

算术运算符包含+、—、*、/和%,当一个表达式中同时出现这5种运算符时,先进行乘(*)、除(/)、取余 (%),取余也称取模,后进行加 (+)、减(一),也就是乘、除、取余运算符的优先级高于加、减运算符。除%运算符外,其余几种运算符既适用于浮点型数又适用于整型数。当操作符/的两个操作数都是整型数时,它执行整除运算,在其他情况下执行浮点型数除法%为取模运算符,它接收两个整型操作数,将左操作数除以右操作数,但它的返回值是余数而不是商。由算术运算符组成的式子称为算术表达式,表达式一定有一个值。

通过下面代码实例我们来掌握一下算术运算符

#include <stdio.h>

int main() {
    int result = 3+6*3-30/5+10%3;
    printf("result = %d\n",result);
    return 0;
}

三、关系运算符与关系表达式

关系运算符>、<、==、>=、<仁、一依次为大于、小于、是否等于、大于等于、小于等于和不等于。由关系运算符组成的表达式称为关系表达式关系表达式的值只有真和假,对应的值为1和0。由于C语言中没有布尔类型,所以在C语言中0值代表假,非0值即为真。例如,关系表达式3>4为假,因此整体值为0.而关系表达式 5-2 为真,因此整体值为1.关系运算符的优先级低于算术运算符,运算符的优先级的详细情況见本文最后。

在工作中,很多程序员容易不小心将两个等号写成一个等号、因此当判断整型变量i是否等于3时,我们可以写为3==i,即把常量写在前面而把变量写在后面。这是因为当不小心将两个等号写为一个等号时,变量在前面就会要致编译不通,从而快速发现错误(这种写法属于华为公司内部的一条编程规范)
同时,在编写程序时,如果我们需要判断三个数是否相等,那么绝对不可以写为if(5==5==5).这种写法的值无论何时都为假,为什么?因为首先5==5得到的结果为1,然后1==5得到的结果为0。如果要判断三个变量a、b、c是否相等,那么不能写为a==b==c,而应写为a==b &&b==C。下面来看一个例子。
【例】关系运算符的错误使用:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int a;
    while (scanf("%d",&a)){
        if(2<a<10){//不能用数学上的连续判断来判断某个数
            printf("a is between 2 and 10\n");
        }else{
            printf("a isn't between 2 and 10\n");
        }
    }
    return 0;
}

如果要判断变量a是否大于3且同时小于10,那么不能写为 3<a<10,这种写法在数学上的确是正确的,但是在程序中是错误的。首先,无论a是大于3 还是小于3,对于3<a这个表达式只有1或0两种结果。由于1和0都是小于10的,所以无论a的值为多少,这个表达式的值始终为真,因此在判断变量a是否大于3且同时小于10时,要写成a>3 && a<10,这才是正确的写法,不能用数学上的连续判断来判断某个数

四、运算符优先级表

五、练习题

下一期:

【C语言】C语言期末突击/考研--选择、循环语句

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值