C语言——操作符讲解 (上)

大家好,我是十一,今天带大家来了解C语言中的各种操作符。

目录

 

1.算术操作符

2.移位操作符

 左移操作符(<<)

 右移操作符(>>)

 3.位操作符

按位与

按位或

按位异或

4.赋值操作符

5.单目操作符

逻辑反操作

取地址/解引用操作符

sizeof

取反操作符

自增和自减

6.关系操作符

7.逻辑操作符

 逻辑与

逻辑或

 8.条件操作符


 

1.算术操作符

算术操作符有:加(+)减(-)乘(*)除(/)

需要注意的是:

对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。

模(余)操作符(%)

%运算符 :a % b   a除以b所得到的余数(a和b必须是整数)

除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。

2.移位操作符

 左移操作符(<<)

移位规则:左边抛弃,右边补0(移动的是二进制位)
    int a = 10;
    a << 2;

 

22ab3371ff524749afa2100ef88b2e01.png

 右移操作符(>>)

移位规则:分为2种:

1.算数右移(左边用0填充,右边丢弃)

2.逻辑右移(左边用原该值的符号位填充,右边丢弃)

    int a = -1;
    a >> 1;

 

108948b4b30747caab3a8a20e4718ab4.png  

 3.位操作符

位操作符有:

& :按位与

|  :按位或

^ :按位异或

位运算符是针对二进制计算的

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

按位与

按位与的运算规则是:对应的二进制位上有0则为0,2个同时为1则为1。

    int a = 3;
    int b = -5;
    int c = a & b;
    printf("%d", c);//C的结果为:3 

14bd999c67414a1bad5878b4af0cafca.png

按位或

按位或的运算规则是:对应的二进制位上有1则为1,2个同时为0则为0

    int a = 3;
    int b = -5;
    int c = a | b;
    printf("%d", c);// C的结果为:-5

16a277deaef6497aaad93183a8db86c4.png

按位异或

按位异或的运算规则是:对应的二进制位上相同为0,相异为1

    int a = 3;
    int b = -5;
    int c = a ^ b;
    printf("%d", c);// C的结果为:-8

4ea2d4c109b8449b931a8c032f0e7bbb.png

4.赋值操作符

+=     加赋值 
-=      减赋值
*=      乘赋值
/=      除赋值
%=    求余赋值
&=     按位与赋值
|=      按位或赋值
^=     按位异或赋值
(先操作,再进行赋值)

5.单目操作符

!              逻辑反操作
-              负值
+             正值
&             取地址
sizeof      操作数的类型长度(以字节为单位)
~             对一个数的二进制按位取反
--             前置、后置--
++           前置、后置++
*              间接访问操作符(解引用操作符)

逻辑反操作

    int a = 3;
    if (!a)//让判断为假,if语句不会执行
    {
        printf("%d", a);
    }

    int a = 0;
    if (!a)//让判断为真,if语句执行
    {
        printf("%d", a);
    }

取地址/解引用操作符

取地址就是:取出一个变量/数组/数组中某一个元素等, 在内存中的地址

解引用操作:通过地址找到原变量

    int a = 10;
    int* pa = &a;//取出地址放到pa变量里
    *pa = 20;//通过地址修改原变量

    char ch = 'a';
    char* pb = &ch;
    *pb = 'b';

    int arr[10] = { 0 };
    int* pc = arr;
    int* pd = &arr[0];
    *pd = 1;
    printf("%d %c %d", a, ch, arr[0]);//输出的结果是20,b,1

sizeof

sizeof:可以求变量(类型)所占空间的大小。
    int a = 10;
    printf("%d\n", sizeof(a));//输出结果为4
    printf("%d\n", sizeof(int));//输出结果为4

取反操作符

(~)操作符:对一个数的补码进行按位取反

    int a = 0;
    printf("%d", ~a);//输出结果为-1

d5938655f1ea47f19ffb1f2a70e70077.png

自增和自减

自增和自减分为后置和前置

后置:先使用,使用完后再进行自增/自减

    int a = 10;
    int b = a++;
    printf("%d", a);//输出的结果为11
    printf("%d", b);//输出的结果为10

前置:先进行自增/自减后再使用

    int a = 10;
    int b = ++a;
    printf("%d", a);//输出的结果为11
    printf("%d", b);//输出的结果为11

6.关系操作符

>          大于
>=        大于等于
<          小于
<=        小于等于
!=         不等于
==        等于
注意:等于操作符为"==","="为赋值操作符

7.逻辑操作符

 

&&       逻辑与(并且)
||          逻辑或(或者)
逻辑与/逻辑或只关注真和假

 逻辑与

5e5347d3767c41df924ca0704207a186.png

逻辑或

e0a5388687da49a195bfe10598ff7a19.png

 8.条件操作符

    int a = 10;
    int b = 20;
    int m = 0;

    if (a > b)
        m = a;
    else
        m = b;
    //也可以写成
    m = (a > b ? a : b);//条件操作符

6ad7912aff074b1fb9fc2410082ac1c6.png

 今天的分享就到这里啦!希望这篇文章能给大家带来一些收获^_^

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十一要变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值