C语言中的运算符及优先级

目录

一、概念

二、单目运算符

2.1 负号运算符

2.2 自增自减运算符

2.3 取值、取地址运算符

2.4 逻辑运算符(单目)     

2.5 位运算符(单目) 

2.6长度运算符

三、双目运算符

3.1 算数运算符

3.2 关系运算符 

3.2 位运算符(双目)

3.3 逻辑运算符(双目)

四、三目运算符

五、赋值运算符/复合运算符

六、逗号运算符

七、运算符优先级表 


一、概念

        所谓运算符,就是一个符号。是用来连接多个表达式从而进行运算。

        表达式,就是由运算符、运算量、标点符号等组成的一个有效序列,是用来说明运算过程的。

二、单目运算符

        单目运算符只对一个操作数进行逻辑运算。

2.1 负号运算符

        -  

         格式:-表达式

2.2 自增自减运算符

        ++ 

        格式:++变量名/变量名++

        -- 

        格式:--变量名/变量名-- 

        注意:

                ++操作数(--操作数) 是先在操作数本身+1(或-1),然后再取操作数的值

                操作数++  (操作数--)是先取操作数本身的值 , 然后操作数本身+1(或-1)

2.3 取值、取地址运算符

       取值 * 

        格式:*指针变量

       取地址

        格式:&变量名

2.4 逻辑运算符(单目)     

         逻辑运算符是用来连接多个由关系运算符组成的表达式的,所以逻辑运算符的表达式的结果也是一个bool类型🔍

       逻辑非 !

                真变假 假变真 

        格式:!表达式

         

2.5 位运算符(单目) 

        位运算符都是针对二进制而言的,位指的是bit位,不管几进制数,只要做位运算,都会转换成二进制数参与运算。 

       

               表示按位取反,按位运算 1变0 0变1

        格式:~表达式  

2.6长度运算符

        sizeof 

                以字节为单位计算变量或类型的大小。 

        格式:sizeof(表达式)

        注意:

                sizeof的用法和函数调用特别像,但是sizeof是C语言关键字,不是函数调用。

                sizeof返回值的计算结果

                            32位系统 返回值是int类型的 需要用%d打印

                            64位系统 返回值是long类型的 需要用%ld打印 

三、双目运算符

        双目运算符只对两个操作数进行逻辑运算。

3.1 算数运算符

        / 模除 % +

        格式:表达式 运算符 表达式

        注意: 

                模除符号两边的表达式必须是整型 eg: 10%3 == 1(余数为1)

                C语言中进行算术运算要求左右两边的操作数数据类型一致。

                eg:整形 与 浮点数类型 进行运算,整形先变为double类型,再参与运算。

3.2 关系运算符         

        关系运算符表达式的结果是一个bool类型🔍,非0为真 0为假 

        大于 > 大于等于 >= 小于小于等于 <= 等于 == 不等于 !=  

        格式:表达式 运算符 表达式 

        注意:

                要区分 == 和 = 的区别

                == 是关系运算符

                = 是赋值运算符 

3.2 位运算符(双目)

        位运算符都是针对二进制而言的,位指的是bit位,不管几进制数,只要做位运算,都会转换成二进制数参与运算。 

        按位与

                 按位运算,全1为1 有0为0

        按位异或

                 按位运算, 不同为1 相同为0

        按位或 | 

                 按位运算,有1为1 全0为0

        按位左移 << 

                按位运算,整个数据向左移动,舍弃高位,低位补0

        按位右移 >> 

                 按位运算,整个数据向右移动,舍弃低位。高位补0

        格式:表达式 运算符 表达式  

        注意:

                一般情况下,但凡涉及到位运算,使用的都是无符号数。

                如果是有符号数,换可能涉及符号位的处理以及原码、反码、补码转换的问题。

                一般多用于硬件设备的控制和标志位的控制等。 

3.3 逻辑运算符(双目)

         逻辑运算符是用来连接多个由关系运算符组成的表达式的,所以逻辑运算符的表达式的结果也是一个bool类型🔍 

        逻辑与 && 

                 逻辑与连接多个表达式,如果全为真,整个表达式的结果才为真,

                有一个表达式为假,整个表达式的结为假。

        逻辑或 || 

                 逻辑或连接多个表达式。如果有一个为真,整个表达式的结果就为真,

                所有表达式为假,整个表达式的结果为假。

        格式:表达式 运算符 表达式 

逻辑运算符的短路原则:

                逻辑与连接的多个表达式,遇到某个表达式为假了,后面的表达式就都不执行了。

                逻辑或连接的多个表达式,遇到某个表达式为真了,后面的表达式就都不执行了。

四、三目运算符

        条件运算符 ?:

                C语言中唯一的一个三目运算符。 

        格式:表达式1 ? 表达式2 : 表达式3

                先执行表达式1,如果表达式1为真,则执行表达式2,否则执行表达式3。 

                执行逻辑与 if...else 语句很像 

五、赋值运算符/复合运算符

         赋值运算符

         除后赋值 /= 乘后赋值 *= 取模后赋值 %= 加后赋值 += 减后赋值 -= 

         左移后赋值 <<= 右移后赋值 >>= 按位与后赋值 &= 按位异或后赋值 ^= 按位或后赋值 |= 

        格式:变量 运算符 表达式 

        eg:

int a = 10;
int b = 20;
a += a*b;    //a的值为210 ==> a = a + (a*b)

六、逗号运算符

         , 

        格式:(表达式1,表达式2,表达式3...) 

        从左到右依次运算,最后一次表达式的结果就是整个逗号运算符表达式的结果。

         注意:

                如果不加括号,就不是逗号运算符了,执行的结果不一样。

                eg:

int a = 10;
int b = 20;
int c = 30;
int ret = (++a,++b,++c);    //ret的值为31(++c)
int ret2 = ++a,++b,++c;    //ret2的值为11(++a)

七、运算符优先级表 

  注:

        同一优先级的运算符,运算顺序由优先方向决定。

        常用的运算符优先级顺口溜 “单算移关与,异或逻条赋”

  • 26
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

枸杞桑葚菊花茶

创作不易,鼓励==>动力

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

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

打赏作者

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

抵扣说明:

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

余额充值