前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言——操作符详解

C语言——操作符详解

作者头像
用户11029137
发布2024-03-19 15:39:26
3180
发布2024-03-19 15:39:26
举报
文章被收录于专栏:编程学习

前言:这篇文章主要讲解一下C语言中常见的操作符的使用,做一下整理,便于日后回顾,同时也希望能帮助到大家。

一,操作符的分类

下面给出一些常用的操作符:

● 算术操作符: + - * / % ● 位移操作符: << >> ● 位操作符: & | ^ ● 赋值操作符:= += -= *= /= ··· ● 单目操作符:! ++ -- & * - + ~ sizeof(类型) ● 关系操作符:> >= < >= == != ● 逻辑操作符:&& || ● 条件操作符:? : ● 逗号表达式:, , , ··· ● 下标引用操作符:[ ] ● 函数调用操作符:( )

1,算术操作符

C语言中算术操作符的运算规则也就是我们日常数学里面的加,减,乘,除,取模

值得注意的是:

1,若果数据的类型都为整形(int),则:/ 运算后,只保留整数部分

2,运算中,若运算对象类型不同,会先把低等级类型的数转换为对应的高等级类型,再进行运算

2,位移操作符

了解位移操作的基础是:

1,要了解二进制

2,知道整数二进制的三种表示方法:原码,反码,补码

在已有上面的基础后,接下来介绍一下位移操作符:

1) 按位左移( << )

位移规则:

左边抛弃,右边补0(对于整型数据左移一位相当于乘以2

书写格式: 整形数据 << 左移位数 如: 5<<2 和 -5<<2 即:00000101<< 2,得 00010100(十进制的20) 11111011 << 2,得 11101100(十进制的 -20)

2)按位右移( >> )

位移规则:

左边用原来值的符号位填充(即负数补1,正数补0),右边抛弃

格式: 整形数据 >> 左移位数 如: 5>>2 和 -5>>2 即:00000101>> 2,得 00000001(十进制的1) 11111011 >> 2,得 11111110(十进制的 -2)

注意:

1,都是对整型数据二进制的补码进行位移

2,对于移动的位数不能是负数

3,位操作符

操作的对象都是整型数据的二进制的补码

1)按位与(&)

规则:

对应位,只要有0:结果就是0, 两个都是1:结果才是1

例如: 5&4相当于:

2)按位或( | )

规则:

对应位,只要有1:结果就是1, 两个都是0:结果才是0

例如: 5 | 4相当于:

3)按位异或( ^ )

规则:

对应位,相同则为0,不同则为1

例如: 5 ^ 4相当于

4)按位取反( ~ )

规则:

对应位,取相反的(即1变0,0变1

例如:

4,赋值操作符

理清楚:赋值操作符最后的落脚点都在赋值

=的作用就是赋值,如:

a = 2; //意思是:把2这个值赋给a

+= -= *= /= 其实逻辑是一样的,这里举两个例子:

a += 2; 等效于a = a + 2 //意思是进行a + 2的运算,把所得的值赋给a a *=2; 等效于a = a * 2 //意思是进行 a * 2 的运算,再把所得的值赋给a

5,单目操作符

单目操作符的特点是:只有一个操作数,且运算优先级较高

ps:因为单目操作符里面的操作对象涉及很多其他知识,所以在此先不做过多讲解

6,关系操作符

关系操作符顾名思义是用来判断两个数之间的关系的,和数学中我们所用到的大于(>),大于或等于(>=)……使用理解上没有什么太大区别

值得一提的是:

1,判断两数是否相同要用(==),因为一个=的是赋值操作符

2,!= 的意思是:“不等于” ,如:a!=b 就是说:a的值不等于b的值

7,逻辑操作符
1)并且(&&)

(表达式1)&&(表达式2):需要&&左右两边都为真,才为真,只要有一个为假,则为假

注意短路:当第一个表达式1为假时,已经可以判断为假了,就不会再计算表达式2

2)或者(||)

(表达式1)||(表达式2):只要表达式1或者2有一个为真,就为真,只有都是假,才为假

注意短路:当第一个表达式1为真时,就可以判断为真了,就不会再计算表达式2

8,条件操作符

格式: 表达式1 ?表达式2:表达式3 规则: 先判断表达式1,如果为真,就执行表达式2,否则执行表达式3 例如: a>b?a:b //如果a>b成立,就取a的值,否则取b的值

9,逗号表达式

格式: 表达式1,表达式2,···,表达式n 规则: 从左向右结合,依次运算表达式的值,最后整个运算的结果就是表达式n运算的值 例如: x=5+1,x*=6,x+1 先计算x=5+1得x=6,再计算6*6得36,最后再计算36+1=37,则整个表达式的值为37

还有很多运算符由于涉及的知识比较多或者其他因素,不方便单独讲解,所以在这里不做讲解

最后附上各运算符的优先级以及结合性:

参考:C 运算符优先级 - cppreference.com

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,操作符的分类
    • 1,算术操作符
      • 2,位移操作符
        • 1) 按位左移( << )
        • 2)按位右移( >> )
      • 3,位操作符
        • 1)按位与(&)
        • 2)按位或( | )
        • 3)按位异或( ^ )
        • 4)按位取反( ~ )
      • 4,赋值操作符
        • 5,单目操作符
          • 6,关系操作符
            • 7,逻辑操作符
              • 1)并且(&&)
              • 2)或者(||)
            • 8,条件操作符
              • 9,逗号表达式
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档