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

【从零开始的C语言】操作符详解

文章目录

  • 前言
  • 一、操作符分类
  • 二、算术操作符
  • 三、移位操作符
    • 3.1 左移
    • 3.2 右移
  • 四、位操作符(重要)
  • 五、赋值操作符
  • 六、单目操作符
  • 七、关系操作符
  • 八、逻辑操作符
  • 九、条件操作符
  • 十、逗号表达式

前言

本篇文章开始,我将开设《从零开始的C语言》专栏,我将会带你从0开始学习C语言。

一、操作符分类

在C语言中,操作符被分为好几类,包括算术操作符、位操作符、赋值、关系操作符等等…接下来我们逐一介绍:

二、算术操作符

+ - * / %
  1. / 操作符在两个操作数都是整数的时候进行整数除法,在操作数有一个浮点数的时候进行浮点数除法。
  2. %操作符只能对两个整数使用,是求余数使用的。

三、移位操作符

<< 左移操作符

右移操作符

3.1 左移

左边摒弃,右边补 **0**

3.2 右移

逻辑右移
右边丢弃,左边补 **0**
算术右移
右边丢弃,左边补 **符号位**

1.符号位为0,代表该数为正数;符号位为1,代表该数为负数。
2.具体补充什么,由编译器决定。
3.注意:位运算符不要移动负数位,因为这是位定义的行为!

四、位操作符(重要)

&按位与两个位都是1,结果才是1
按位或两个位都是0,结果才是0
^按位异或两个位相同为0,不相同为1

做一道题目:如何不使用中间变量交换两个值?
规律:任何数字与0异或,都是其本身!

#include <iostream>
using namespace std;
int main()
{int a = 10;int b = 20;cout << a << b << endl;	a = a ^ b;b = b ^ a;a = a ^ b;//a = a ^ a ^ b;//b = b ^ b ^ a;cout << a << b << endl;return 0;
}

五、赋值操作符

赋值操作符可以与上面算术操作符和移位操作符相结合。

a += 10 -------> a = a + 10
a >>= 10 -------> a = a >> 10

六、单目操作符

所需变量为1个的操作符我们称之为单目操作符,主要介绍三个,逻辑反操作符!、sizeof操作符、以及强制类型转换操作符()。
1.逻辑取反操作符:!可以让得到的结果取反,比如 !true = false
2.操作符类型长度:sizeof 这个操作符经常被当作函数使用,因此可以携带括号
3.强制类型转换: () 强制类型转换后其实是一份常量。

七、关系操作符

像我们平时比较数据大小用的>、=、<、>=等等,这些操作符即是关系操作符,在之后c++学习过程中,我们还会重载这些符号来适应更复杂的内容

八、逻辑操作符

&& 逻辑与 : 表达式A与表达式B同时成立才成立
|| 逻辑或 : 表达式A与表达式B有一个成立就成立

注意:A || B的时候,如果A表达式已经成立,则会直接返回true而不会进入第二个表达式B的判断。

九、条件操作符

条件操作符又被称为三目操作符
表达式 : A ? B : C
A成立,执行B语句;否则,执行C语句,跟ifelse语句类似。

十、逗号表达式

逗号表达式即指用逗号隔开多个表达式,整个表达式的结果是最后一个表达式的结果。

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

相关文章:

  • 黑马在线教育数仓实战1
  • python中pandas模块数据处理小案例
  • 从 X 入门Pytorch——Tensor的自动微分、计算图,常见的with torch.no_grad()机制
  • 三十七、实战演练之接口自动化平台的文件上传
  • 菜鸟刷题Day1
  • cjson文件格式介绍
  • 【Nginx二】——Nginx常用命令 配置文件
  • 3月最新!AIGC公司生态地图;开发者实用ChatGPT工具清单;上手必会的SD绘图教程;字幕组全自动化流程大公开 | ShowMeAI日报
  • python - 递归函数
  • ring_log环形日志-6M缓冲区_proc接口
  • Linux内核进程管理几种CPU调度策略
  • SpringBoot整合Flink(施耐德PLC物联网信息采集)
  • DFS(深度优先搜索)和BFS(宽度优先搜索)
  • Redis缓存穿透、击穿、雪崩问题及解决方法
  • HAL库 STM32 串口通信
  • 2023-第十四届蓝桥杯冲刺计划!
  • 内网渗透基础知识
  • 鸟哥的Linux私房菜 正则表示法与文件格式化处理
  • 1630.等差子数组
  • CSS 属性计算过程
  • ThinkPHP02:路由
  • 制作简单进销存管理系统(C#)
  • css总结9(过渡和2D变换)
  • SpringBoot 结合RabbitMQ与Redis实现商品的并发下单【SpringBoot系列12】
  • 【python进阶】序列切片还能这么用?切片的强大比你了解的多太多
  • [数据结构]直接插入排序、希尔排序
  • CNN、LeNet、AlexNet、VGG、GoogLeNet、RCNN、Fast RCNN、Faster RCNN、YOLO、YOLOv2、SSD等的关系
  • IO-day1-(fscanf、fprintf.........)
  • C++类和对象(上篇)
  • 解决Xshell无法连接Kali Linux 2020.1(2019.3)版本