操作符介绍1

目录

前言

一、操作符的分类

 1.算数操作符

2.移位操作符

 (1)右移  :   

 (2)左移:

3.位操作符

(1)按位与:

(2)按位或:

(3) 按位异或:

 4.赋值操作符

5.单目操作符

6. 关系操作符

 7.逻辑操作符

8.条件操作符

总结

以上就是今天要讲的内容,本文仅仅简单介绍了一些常见操作符的使用,熟练使用操作符能让我们更快的写代码,所以多记一记吧


前言

1.各种操作符的介绍


一、操作符的分类

1、算数操作符        + (加)      -(减)       *(乘)        /(除法取整)        %(除法取模)

2、移位操作符        <<(左移)        >>(右移)

3、位操作符            &(按位与)        |(按位或)        ^(按位异或)

4、赋值操作符        +=        =        -=        *=

5、单目操作符        !        ++        --        ~(取反)        sizeof        &        *

6、关系操作符        <        <=        >        >=        ==        !=

7、逻辑操作符        &&        ||

8、条件操作符        exp1  ?  exp2  :  exp3

 1.算数操作符

        算数操作符:就是我们平时常用的+(加)、-(减)、*(乘)、/(除法取整)、%(除法取模)。

        1.除了%(取模)操作符之外,其他的算数操作符都可以操作整数和浮点数。

        2.对于/操作符来说,操作符所操作的两个数为整数,就执行整数除法,而一旦出现浮点数,就执行浮点数除法。

        3.%操作符操作的两个数必须是整数,但是返回的是整除后的余数。

        使用方法和我们平常一样,没有太大区别,这里和大家说一个小知识,在电脑的cpu中只有加法,那么像乘法、除法、减法是怎么完成的呢?如果你感兴趣可以看一下链接的文章。

数据在内存中的储存_幽幽大行军的博客-CSDN博客

2.移位操作符

        移位操作符:<<(左移)、>>(右移),移位操作符的作用是将数值的二进制位进行移动,

 (1)右移  :   

#include<stdio.h>
int main()
{
    int a=15;//声明变量
    //00000000000000000000000000001111    ——原码
    //00000000000000000000000000001111    ——反码
    //00000000000000000000000000001111    ——补码
    int b=a>>1;//将a的二进制向右移动一位的结果用b来接受

    printf("%d\n",a);
    printf("%d\n",b);
return 0;
}

 

 那么,为什么右移一位就从15变成了7呢?

 这里我们应该怎么办呢?

在C语言中有两种右移方法,

1.算数右移:右边丢弃,左边直接补符号位。

2.逻辑右移:右边丢弃,左边补0。

        但是呢,我们并不知道到底是用哪一种,C语言中也没有规定,但是在编译器用一般都是采用算数右移。 

 

注意!上面的a,b的值取正是为了方便计算,我们所有的计算都是对补码进行操作,如果对原、反、补码不知道的同学请参考下面的文章,

数据在内存中的储存_幽幽大行军的博客-CSDN博客

接下来我们来看看负数是怎么算的。

#include<stdio.h>
int main()
{
    int a = -15;//声明变量
    //10000000000000000000000000001111    ——原码
    //11111111111111111111111111110000    ——反码
    //11111111111111111111111111110001    ——补码
    int b = a >> 1;//将a的二进制向右移动一位的结果用b来接受

    printf("%d\n", a);
    printf("%d\n", b);
    return 0;
}

         

 最后得到的a向右移动一位的值,也就是b的值,此时我们得到的是补码,将补码进行还原得到原码。

 

 (2)左移:

        相对于右移,左移要简单的多。

        左移:左边丢弃,右边直接补0

这里我就不多讲了,比起右移已经更简单了,有兴趣可以下去自己试试

还有大家不要搞一下神奇的操作哈,像什么(a<<-2)的操作千万不要来理论上是可行的,但是这种操作是没有规定的,所以最好不要使用。

3.位操作符

&        按位与

|        按位或

^        按位异或

!他们的操作数必须是整数。

位操作符也是操作二进制位,以二进制位的方式进行计算。

(1)按位与:

 

 这里我们声明a,b,然后进行按位与操作

按位与的操作规则是:两个二进制有零则为零,两个同时为一才得一。

 

(2)按位或:

按位或操作符的规则是:有一则为一,两个同时为零时,结果才为0

(3) 按位异或:

按位异或:对应的二进制位,相同才为0,相异为1

了解了位操作符后,我们来看看一道题

要求:交换两个变量中的值,不能出现第三个变量

这道题我们要怎么办?平常我们都是直接创建第三个变量进行交换,但是现在不能创建变量了,怎么办?你是否联想到了位操作符? 

 

 从这里我们了解了,如果一个数异或0,那么得到的结果就是这个数,并且两个相同的数进行异或,得到的结果是0,

从这里我们又看见了a^a^b=a^b^a,所以异或操作符是支持交换率的,然后呢,看清楚这神奇的一幕 

 这是怎么完成的呢?

首先,a=a^b,我们将算式带入b=a^b,得到了新的算式b=a^b^b,我们又知道两个相同的数进行异或结果就是它本身,所以b ^b=b,所以b=a,我们就将a放入了b中,最后一个算式a=a^b,此时带入算式1,算式2(此时b=a),得到a=a^b^a,就这样,我们完成了交换。

 

 4.赋值操作符

赋值操作符可以连续进行赋值

int main()
{
int a=1,b=2,c=3;
a=b=c;
return 0;
}

当然还有符合赋值操作符像*=、+=、-=之类的

5.单目操作符

!                        逻辑反操作

-                          负值

+                         正值

&                         取地址

sizeof                 操作数的类型长度(以字节为单位)

~                        对一个数的二进制位取反

--                        前置、后置减一

++                      前置、后置加一

*                         间接访问操作符(解引用操作符)

(类型)                强制类型转换

6. 关系操作符

>                                大于

>=                              大于等于

<                                小于

<=                              小于等于

!=                               不等于

==                              等于

!只能用于适应的操作值,不要拿符号比较大小

 7.逻辑操作符

&&                逻辑与(并且)        两边为表达式,两个表达式都为真,结果才为真

||                   逻辑或(或者)        两边有一个是真,结果就为真

8.条件操作符

 exp1  ?  exp2  :  exp3

exp1、2、3都为表达式,条件操作符的规则是:看exp1的真假,如果为真,则执行exp2;如果为假,则执行exp3;

 


总结

以上就是今天要讲的内容,本文仅仅简单介绍了一些常见操作符的使用,熟练使用操作符能让我们更快的写代码,所以多记一记吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值