| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 不允许你还不会用这些操作符(详解c语言操作符) -> 正文阅读 |
|
[C++知识库]不允许你还不会用这些操作符(详解c语言操作符) |
写在前面:这篇博文为c语言中所有操作符的介绍以及使用它们时要注意的一些点。博主水平有限,文章若有错误之处,望读者斧正。 文章目录操作符分类首先我们要知道c语言的操作符可以分成十大类
下面开始一个个介绍它们 1.算术操作符
我们可以用数学中的运算符来理解c语言中的算术操作符,前面三个操作符就没什么好介绍的。对于 / 操作符,只要除号两边的操作数存在浮点数,就执行浮点数除法运算,算出的结果为浮点数;两个操作数都为整数,就进行整数除法运算。 接着是%(取模操作符),取模运算得到的结果是两数相除的余数。 但除了取模操作符之外,其他的操作符都能用作于整数或者浮点数。 2.移位操作符移位操作符有两个
在学习移位操作符之前,我们先要了解整数在计算机中的储存形式。 2.1原码,反码和补码数据在计算机中都是以补码的形式存储的,提到补码就不得不说原码与反码。 原码就是把一个十进制数翻译成二进制序列。符号位不变(符号位为二进制序列的首位),对原码按位取反(把1变成0,0变成1)得到反码,对反码加一得到补码。正数的原码,反码,补码相同。举个例子,把5翻译成二进制序列是多少呢? 那-5的二进制序列呢? 最终-5以补码的形式存储在内存中,但是我们在打印-5时,又要把-5的补码转化成原码。这个原理暂时不说, 2.1移位操作符介绍移位操作符针对的是整数,要移动的位数必须是正整数。 对移动的方向进行分类,我们把移位操作符分为左移操作符和右移操作符。先来说说左移操作符,把10左移一位,这个移动操作是怎么实现的?用图片演示左移的过程 可以看到,10的二进制位向左移动一位,右边空出一位,空位补0,左边舍弃一位。现在表示的数是20,因此,我们能把左移一位理解为乘以2。 与左移不同,右移操作分为逻辑右移与算术右移,具体的移动形式由编译器决定。何为逻辑右移?二进制位向右移动一位,左边的空位补0。算术右移,空位补原来的符号位。什么意思呢? 上图表示的是-5逻辑右移,无论数字的正负,空位补0,那-5的算术右移呢? 最后,不要对一个数移动负数位,比如
这是什么意思,右移-1位?直接说左移1位不行吗吗?这种代码编译器不能识别出来,我们尽量不要写这种奇怪的代码(正常人谁这样写代码啊),平时要注意,别一不小心写成这样的错误代码了。 3.位操作符位操作符有三种
它们的操作数必须是整数。 3.1按位与这里的位指的是二进制位,两个数都为1,按位与的结果是1,一个数为0,按位与的结果都是0。举个例子, 3.2 按位或而按位或也是大同小异,1与任何数按位或都等于1。两个数都为0,按位或结果才为0。这里就不画图了,还是比较简单的。 3.3 按位异或按位异或的运算原则是:两数相同为0,不同为1。有一个有趣的规律,两个相同的数异或,结果是0;某个数与0异或,结果为本身(结果不变)。运用异或的知识,我们可以在不创建第三个变量的情况下,实现两个数的交换, 4. 赋值操作符
顾名思义,我们能运用赋值操作符把值赋给变量。在变量初始化的时候我们能用它来赋初值,之后也能用它来对变量重新赋值 注意点:不要搞混了= 与 == 这两个操作符,=在c语言中是赋值,两个=是用来判断两个操作数是否相等。 4.1 复合赋值符当我们要写a = a + 10 时,可以用更简洁的写法,这时就要运用复合赋值符 += ,把表达式写成a += 10。其他的复合赋值符也类似,这里不再一一列举。 5. 单目操作符
有的操作符在之前已经介绍过了,这里就挑几个重点的讲讲 5.1 !逻辑反操作我们知道,在计算机中,0表示假,非0表示真。对一个非0的数逻辑反操作得到的是0,0则是假。对0逻辑反操作得到的是1(计算机中的!0始终表示1),1表示真。这就是逻辑反操作的用法。 5.2 前置与后置++前置++,操作数先自增,再使用。后置++,先使用操作数,再自增。举个例子 5.3 按位取反对补码的每个二进制位取反(1变成0,0变成1) 6. 关系操作符
用来判断两个操作数是否相等,注意赋值符=与判断相等符号==的区别 7. 逻辑操作符
可以用数学里的并且和或者来理解这两个操作符。表示一个数大于0并且小于18时,在数学里是用0 < x < 18表示的,但c语言不这样表示,我们要写成
一定不能写成数学里的形式。 7.1 逻辑短路在由&&和||组成的表达式中,逻辑短路是经常发生的,那逻辑短路又是什么呢? 由于程序直接跳出,我们给这种动作起了个形象的名字:逻辑短路。一些程序阅读题会经常考查这个知识点,在平时做题时要注意逻辑的短路。 8. 条件表达式条件表达式又叫三目表达式
如果exp1成立,程序执行exp2,若不成立,程序执行exp3。这个表达式我经常用来判断两个数的最大值。
9. 逗号表达式
用逗号把表达式隔开(养成好习惯,逗号表达式一定要加上括号),程序会从左向右运算每一个表达式,逗号表达式的结果是最后一个表达式的结果。不过我们不能直接计算最后一个表达式,因为之前的表达式可能影响最后一个表达式的值。
能直接说c的值是3吗?显然,直接计算最后一个式子是错误的,程序要从左向右计算,因此程序先自增a,然后自增b,最后结果是5。 10. 下标引用,结构成员和函数调用下标引用操作符是[ ],当我们创建数组,想访问数组成员时,就要用到它 函数调用操作符我也说过,再不要脸的贴个链接函数基础知识点讲解。 这里主要讲解下结构成员操作符 最后:这篇文章内容太多,整理的时候好几次想放弃(因为自己对这块知识还是比较熟悉的),最后还是肝出来了,并且修改了好多次。如果这篇文章有帮助到你,看在博主这么用心的份上,hxd点个赞再走呗。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:56:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |