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

【从零开始的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.kler.cn/a/2634.html

相关文章:

  • 【vue3封装element-plus的反馈组件el-drawer、el-dialog】
  • 从零手写线性回归模型:PyTorch 实现深度学习入门教程
  • _decl_class_registry 与 metadata.sorted_tables的区别
  • vue el table 不出滚动条样式显示 is_scrolling-none,如何修改?
  • 并行云使用流程
  • Leecode刷题C语言之按键变更的次数
  • css总结9(过渡和2D变换)
  • C语言手撕一个Hash表(HashTable)
  • Redis缓存穿透、击穿、雪崩问题及解决方法
  • 算法训练营第五十九天|LeetCode647、516
  • JavaSE进阶之(十六)枚举
  • 项目文章 | 缓解高胆固醇血症 ,浒苔多糖如何相助?
  • 【系统学习】环境土壤物理模型HYDRUS1D/2D/3D
  • 原力计划来了【协作共赢 成就未来】
  • <C++> 类和对象(下)
  • Java四种内部类(看这一篇就够了)
  • C++中那些你不知道的未定义行为
  • 蓝桥杯刷题第二十天
  • 机器学习-scikit-learn
  • 做一个前端网页送给女朋友~轮播图+纪念日
  • 【Android -- 开发工具】Xshell 6 安装和使用教程
  • 超详细解析|大厂都在用的设计提效神器 Design Toke
  • 【新星计划2023】SQL SERVER (01) -- 基础知识
  • 蓝桥杯集训·每日一题Week4
  • 一家被“送”上市的公司,达美乐称霸披萨界?
  • libvirt零知识学习4 —— libvirt源码编译安装(2)