录(本篇字数:2120)

介绍

运算符分类

算术运算符

逻辑运算符

关系运算符

位运算符

赋值运算符

经典问题:a = 5,b = 8,如何交换两个变量的值?


  • 介绍

说到运算符,从小我们就学过算术运算符了。算术运算符就是 +、-、*、/ 这四个。当然了,这局限于我们的初学期,之后我们可能会遇到 % ,如果你大学专业是计算机的话,那么必定会接触到 ++、--的运算,比如还有&、^、|、!等等一些,我就不再列举了。所以以上几种就是我们计算机中常用的运算符。

首先,我们先来看看计算机中运算符的归类吧,这也是我们打好算法基础的基石。

  • 运算符分类

  • 算术运算符
  • 逻辑运算符
  • 关系运算符
  • 位运算符
  • 赋值运算符

运算符大体上分为这几个类别,当然还有一些其他的运算符,我们将计算机中最常用的运算符掌握了就可以了。接下来,我们来看看这几个类别中的具体运算符的使用吧。

  • 算术运算符

算术运算符
+ 加法运算(6+3=9)
- 减法运算(6-3=3)
* 乘法运算(6*3=18)
/ 除法运算(6/3=2)
% 求余运算(6%3=0)
+ 正号
- 负号
++ 自增运算(++a,a++)
-- 自减运算(--a,a--)

可能刚开始有些同学不太理解求余运算(也就是模运算),那么我举个例子来看看求余运算的具体运用。

刚开始学习C语言的时候,我们肯定都写过如何求闰年吧,那怎么判断今年是否为闰年呢?可能很多人都以为4年一闰年,当时我在学习C语言的时候,也是以为判断条件只要能被4整除就是闰年,这就有点缺乏常识啦。

    标准的判断闰年的条件:

1. 能被4整除。

2. 不能被100整除,但可以被400整除。

比如,1700年、2100年就不是闰年,2000年才是闰年。(闰年有时候是4年一次,有时候却是8年一次

那么以代码的方式来判断就是(这里就是用到求余运算了):

if(year % 4 ==0 && year % 100 !=0 || year % 400 == 0)
  • 逻辑运算符

逻辑运算符(A=0:假,B=1:真)
&& A && B = 0(全为1才是真,任意一个为0就是假)
|| A || B = 1(全为0才是假,任意一个为1就是真)
& 同上,但是多个条件不中断,直到结束
| 同上,但是多个条件不中断,直到结束
!A = 1,!B = 0

通过上面这个表格,或许你有点不理解。但是没关系,你只要记住这个判定法则就行了,我举几个例子来说明这几个运算符的区别和运用场景吧。

(1) 8 > 5 真 (2)  6 < 2 假 (3)  3 > 2 真 (4)  3 > 7 假

以上面几个充当判断条件,用这几个运算符进行简单区分,才能更好的解释运算符的作用。

&&

8>5 && 6<2  假 (一真一假)

8>5 && 3>2  真 (两真才为真,否则都为假)

||

8>5 || 6<2  真 (如有一真即为真)

6<2 || 3>7  假 (两假才为假)

这个好理解,没什么好说的。!假 = 真,!真 = 假

&& 、& 和 || 、 | 的运算法则是一样的,但是在计算机中却有这点区别:继续和中断。

8>5 && 6<2  假 ,首先判断第一个条件为真,继续第二个条件为假,则为假。下面交换条件位置:

6<2 && 8>5  假 ,首先判断第一个条件为假,不继续,直接为假。

运算规则:& 无论左边结果是什么,右边还是继续运算;&& 当左边为假,右边不再进行运算。同理,||与|也是如此。

  • 关系运算符

这个比较简单,我就不用表格和例子来说明了,有数学基础的都会,只是在计算机中的表达形式不一样而已。

> (大于)、<(小于)、=(等于)、!=(不等于) 、>=(大于等于)、<=(小于等于)

  • 位运算符

位运算符
& 与运算
| 或运算
^ 异或运算
~ 非运算(取反)
<< 左移运算
>> 右移运算

这个比较难理解,举个简单例子,数值是我随便写的。如果你对二进制转换有什么不理解的,请点击这里。

78&99=66, 这个是怎么计算的呢?

首先,位运算是二进制的运算,所以要把它们转成二进制,然后进行计算。

78 的二进制为 : 1001110

99 的二进制为 : 1100011

& 运算后得到值: 1000010 = 66

| 运算后得到值: 1101111 = 111

^ 运算后得到值: 0101101 = 45

~ 运算的计算公式是: -(x+1)。~78 = -79 ,~99 = -100 。那么 ~ -100 = 99 也是一个道理。

<< 左移运算,比如 5<<1 = 12,那么如何计算出来过程呢?下面我画一张草图来具体讲解一下这个过程:

>>右移运算也是同理,移几位,用几个零去补,然后重新组合成二进制的数。

如果不信的话,可以用高级计算器来换算一下。计算机用到码是二进制补码,其实,我们在数学中学过的命题是不是类似的道理。

  • 赋值运算符

几类运算符中,还是属位运算符最难理解,因为涉及到计算机底层的运算,我们不是写底层的话,也不是经常用到。因为这些底层操作会使计算机处理的相对来说更加迅速,作为程序猿来说,还是得懂得基本运算的。

赋值运算符
= 赋值
+= a += b 相当于 a = a+b
-= 同理
<<= 同理
%= 同理
&= 同理

我就不依次列举这些赋值运算符了,以上几个就说明了赋值运算符的基本形式。当然,不能就这么学完就结束了。我们通过一个简单的题目,来运用一下这些运算符。

经典问题:a = 5,b = 8,如何交换两个变量的值?

哈哈,也许大多人都是会引用一个临时变量来保存,然后进行赋值交换。确实,这也是最最简单的一种。这种方法就好比两个杯子中的水、牛奶做交换,然后再拿一个空杯子做临时存放。但是,在计算机中引入变量就相当于开辟了内存,增加了内存开销。这种解法在底层中肯定是被遗弃的,因为底层更追求算法的极致、高效。所以来看看后面两种吧。

第二种:通过加减法运算,我们知道计算机保存变量的规则,所以利用这一点,既不需要引入变量,又可以进行交换。操作是这样的:

第三种:如果不是之前看到过,或者主攻算法方向的,还真的未必会想得到这种算法。这里运用了二进制运算符 ^,我们来看看操作:

©原文链接:https://blog.csdn.net/smile_Running/article/details/80916572

@作者博客:_Xu2WeI

@更多博文:查看作者的更多博文

转载于:https://www.cnblogs.com/xww0826/p/10359518.html

【C语言运算符大全】快速学会C语言运算符相关推荐

  1. 如何快速学会php语言

    要快速学会PHP语言,可以采取以下几个步骤: 入门学习 首先,可以上网查找PHP的入门教程,了解基本的语法和概念,掌握变量.数组.函数.流程控制等基本知识. PHP(Hypertext Preproc ...

  2. c语言函数大全语法下载,C语言函数大全(语法).doc

    C语言函数大全(语法) 函数名: abort功 能: 异常终止一个进程用 法: void abort(void);程序例:#include #include int main(void) { prin ...

  3. c语言函数大全表格形式,C语言函数大全[表格形式].doc

    C语言函数大全[表格形式].doc 目 录 1.字符函数,所在函数库为ctype.h--------------------------2 2.数学函数,所在函数库为math.h.stdlib.h.s ...

  4. c语言代码大全表解释_C语言常用错误代码释义大全,值得收藏!

    对于刚学编程,刚接触C++的新手来说,编译运行报错是最头疼的一件事,爆出一堆英文,英语差一点的又不知道什么意思,所以也不知道如何去改,在此,我给大家传一份常见错误中英文对照表及简单解释,希望可以帮到大 ...

  5. c语言零基础快速入门,C语言几种循环结构—零基础小白快速入门必学

    循环语句是用于重复执行某条语句(循环体)的语句,它包含一个控制表达式,每循环执行一次都要对控制表达式进行判断,如果表达式为真,则继续执行循环.C语言提供了3中循环语句,分别为while语句,do wh ...

  6. c语言代码大全500行,C语言职工档案管理系统 500多行代码1

    <C语言职工档案管理系统 500多行代码1>由会员分享,可在线阅读,更多相关<C语言职工档案管理系统 500多行代码1(17页珍藏版)>请在人人文库网上搜索. 1.1程序的总体 ...

  7. 病毒c语言代码大全,谁有C语言编写的病毒源代码?

    一个c病毒源代码 #include #include #include #include #include #pragma comment(lib,'shlwapi.lib') #define TIM ...

  8. 51单片机c语言算法大全,51单片机C语言实例(350例)Proteus仿真和代码都有

    1-IO输出-点亮1个LED灯方法1 / h7 h! }$ P, {* F7 J  T10-LED循环左移 ! R+ }$ j) t5 a' \0 A100-24c02记忆开机次数 - d2 Q9 v ...

  9. ecc签名体制c语言代码大全,ECC算法C语言实现-Go语言中文社区

    密码学实验:ECC算法实现 1.实验内容 2.运行结果: 1.椭圆曲线上的点集 2.椭圆曲线生成元以及对应的阶 3.加解密算法 代码如下: /* (1)编程计算该椭圆曲线上所有在有限域GF(89)上的 ...

最新文章

  1. 解决windows7下vs2008不能正常编译ActiveX控件的问题
  2. 为什么我们使用Linux内核的(网络)协议栈?
  3. 【Java】Servlet 工作原理解析
  4. Deep Learning论文笔记之(八)Deep Learning最新综述
  5. mysql数据万能导入工具下载_mysql数据导入工具下载 - 数据导入工具(EMS Data Export for MySQL) v3.7.0多语特别版下载 - 第九软件网...
  6. python操作redis用法详解
  7. 堆、栈及静态数据区详解 转
  8. [转]C++中的三种继承public,protected,private
  9. 大华管理平台用户名_智能财务引领商业与管理变革——浙大EMBA首席财务官研习社走进大华股份...
  10. 图论 —— k 短路
  11. rust睡觉按键没反应_腐蚀Rust有哪些实用操作 腐蚀Rust实用操作汇总-游侠网
  12. 【Level 08】U07 Mixed Feelings L6 State of the Nation
  13. 虚幻引擎和实时3D技术人才的需求已达到空前高度
  14. 检测网站CDN是否生效
  15. 物体检测模型RFBNet——一个非常好用的模型。
  16. 健身教练教你跑步减肥的正确方法
  17. 公有云平台专题《中移云平台,NB-IoT模组对接中移OneNET平台》
  18. 超详细编写登录注册页面(内含验证码登录)
  19. 《BPF( 伯克利数据包过滤器 ) Performance Tools》 第六章 CPU
  20. c语言的if指令表示,if(赋值语句)

热门文章

  1. 一位职场老鸟的 10 年复盘,帮你避坑不吃亏!
  2. 这个勒索软件也太菜了!
  3. 被微软称为 “世界的电脑” ,Azure 到底有多牛?
  4. 富士康遭黑客巨额勒索 企业如何应对数据安全风险?
  5. 华为MateRS巴黎大皇宫首秀 专为保时捷跑车70周年高定手机
  6. django -- 插入行的不同方式
  7. Powercli批量删除快照
  8. Sisyphus.js的使用
  9. Javascript:charCodeAt()方法及示例
  10. 构建负载均衡服务器之二 LVS详解及应用