当前位置: 首页 > news >正文

我能“C”——详解操作符(上)

目录

1.操作符的分类:

2. 算数操作符

3.移位操作符

4.位操作符

5.赋值操作符

6.单目操作符

7.关系操作符

8.逻辑操作符

 THE END


 1.操作符的分类:

操作符也叫运算符

算术操作符   

移位操作符   

位操作符

赋值操作符

单目操作符

关系操作符

逻辑操作符

条件操作符

逗号表达式

下标引用、函数调用和结构成员

2. 算数操作符

+    -   *   /   %

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

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

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

 3.移位操作符

<< 左移操作符:左边丢弃,右边补0

>> 右移操作符:

1.>>算数右移:右边丢弃,左边用原来的符号位来填充

2.>>逻辑右移:右边丢弃,左边直接用0补充

右移的方式取决于编译器!但大多数的编译器都用算数右移。

注:移位操作符的操作数只能是整数。

       移位操作符移动的是二进制位

       内存是以补码的形式存储,但是打印的时候是打印原码

       对于移位运算符,不要移动负数位,这个是标准未定义的。

想了解移位操作符,就必须得先了解二进制表现形式。

整数的二进制表示形式有三种:原码,反码,补码

原码把一个数按顺序正负直接翻译成二进制就是原码

注:正整数的原码、反码、补码都是相同的

        负数的原码、反码、补码是要计算的

反码:原码的符号位不变,其他位按位取反就是反码

补码:反码+1

 负数的话第一位符号位不用取反!

4.位操作符

位操作符有:

&          //按位与

|           //按位或

^          //按位异或

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

按位与 &:

 按位或 |:

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

                      0和如何数异或等于该数本身,即 0^a=a

                     一个数和它本身异或等于0.即a^a=0

5.赋值操作符

赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。

int weight = 120;//体重
weight = 89;//不满意就赋值
double salary = 10000.0;
salary = 20000.0;//使用赋值操作符赋值
//赋值操作符可以连续使用,比如:
int a = 10;
int x = 0;
int y = 20;
a = x = y+1;//连续赋值
//这样的代码感觉怎么样?
//那同样的语义,你看看:
x = y+1;
a = x;
//这样的写法是不是更加清晰爽朗而且易于调试。

 复合赋值符

+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=

这些运算符可以写成复合的效果。

比如:

int x = 10;
x = x+10;
x += 10;//复合赋值
//其他运算符一样的道理。这样写更加简洁

6.单目操作符

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

7.关系操作符

>
>=
<
<=
!=   用于测试“不相等”
==      用于测试“相等”

警告: 在编程的过程中== 和=不小心写错,导致的错误。

8.逻辑操作符

逻辑操作符有哪些:

&&     逻辑与
||          逻辑或

区分逻辑与和按位与

区分逻辑或和按位或

1&2----->0
1&&2---->1
1|2----->3
1||2---->1

逻辑与和或的特点:

1.&&操作符左边为假,右边就不用执行

2.||操作符左边为真,右边就不执行

3.&按位与,|按位或 ——>二进制位进行计算

   &&逻辑与,||逻辑或——>分别可以理解为并且,或者。只关注真假。

 THE END

      这是今日份关于操作符的一些分享,希望可以帮助到大家!如果有什么不足的地方也请家人们给小叶一些好的建议,我会不断优化文章的!那就让我们一起加油吧!哈哈哈哈哈

http://www.lryc.cn/news/43442.html

相关文章:

  • 第一章Vue基础
  • 【虚幻引擎UE】UE5核心效率插件推荐
  • 记录丨阿里云校招生的成长经历
  • 蓝桥杯第14天(Python版)
  • 双指针常用方法
  • 人工智能大模型之ChatGPT原理解析
  • 傅里叶谱方法-傅里叶谱方法的原理、快速傅里叶变换及其Matlab程序实现
  • 11万字数字政府智慧政务大数据建设平台(大数据底座、数据治理)
  • Node.js学习笔记——Node.js模块化
  • 【洛谷刷题】蓝桥杯专题突破-广度优先搜索-bfs(12)
  • 【数据结构】堆(堆的实现 堆向下调整算法 堆的创建 堆的插入 堆的删除 堆的代码实现 堆的应用)
  • JDBC数据库驱动的下载与安装与连接
  • 如何更改 PDF 背景颜色?
  • room数据库使用以及增加表的使用
  • WiFi-交互过程分析
  • 基于ZYNQ+linux+xenomai 的多轴运动控制平台关键技术研发-测试系统搭建(四)
  • 初识操作系统
  • #详细介绍!!!线程池
  • 【嵌入式Linux学习笔记】基于Linux官方库的标准外设驱动
  • 网络爬虫抓包工具
  • 蓝桥杯倒计时 | 倒计时17天
  • 【Spring Cloud Alibaba】7.Sentinel熔断器仪表盘监控
  • 个人博客系统项目测试报告
  • flutter安装自用笔记
  • tomcat线程池以及在SpringBoot中的启动过程
  • 第十四届中国大学生创新创业大赛
  • LeetCode:322. 零钱兑换——动态规划从案例入门
  • 【lwIP(第四章)】网络接口
  • Vue3 pinia入门篇(一)
  • python面向对象编程解释