【C语言运算符大全】快速学会C语言运算符

    录(本篇字数: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

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

posted @ 2018-07-04 18:11  爱写Bug的程序猿  阅读(2209)  评论(0编辑  收藏  举报