> 文档中心 > C语言自学之路十一(详解C语言操作符一)

C语言自学之路十一(详解C语言操作符一)


本文所结合图书及视频

《C语言程序设计(第四版)谭浩强.pdf》

《C语言入门到精通—鹏哥带你C语言从入门到精通》

《郝斌老师的C语言自学视频》

这些在B站上都能找得到的。

本章重点:

1、各种操作符的介绍及应用

2、表达式求值

学习任务:

一、操作符的分类

C语言的操作符总共分为 10 种,如下图:

 接下来我们逐步介绍每种操作符及其运用

1. 算术操作符

        C语言中的算术操作符其实和我们在接受义务教育阶段所学的数学中的算术运算符号差不多的。也就是 加  减  乘  除   取余  运算。具体的符号表示如下

         符号作用:

                         +        用于整数及浮点数的加法运算

                         -         用于整数及浮点数的减法运算

                         *         用于整数及浮点数的乘法运算

                         /          用于整数及浮点数的除法运算

                        %         用于计算两个整数相除的余数

        注意事项:

                        1) +   -    *    /   这四个运算符都可以用于整数和浮点数的运算。

                        2) 当使用 /  除法运算符时,如果符号两边的数都是整型,则自动执行整型除法,其运算结果也是只保留整型部分;如果符号两边至少有一个是浮点型,则自动执行浮点型除法,其运算结果为浮点型。

                        3) %  模运算符的两边只能是整型,其结果也是整型。

2. 移位操作符

        移位操作符分为 左移右移

         <<   左移符号       用于将整数左移指定位数。 不论是算术移位还是逻辑移位,都是把左边位丢弃,右边的空位补 0

         >>   右移符号       用于将整数右移指定位数。 当进行逻辑移位时,是把右边位丢弃,左边的空位补 0 。当进行算术移位时,是把右边位丢弃,左边位补原数的符号位(原数为正补 0,原数为负补 1 )

3. 位操作符

        位操作符分为  按位与   按位或   按位异或    。

        &   按位与            对应的二进制位有0为0, 相同位都是1才为1 。

        |    按位或            对应的二进制位有1为1, 相同位都是0才为0 。

        ^   按位异或         对应的二进制位相同为0,不同为1 。

        注意事项:

                1) 位操作符的操作数必须为整数。

                2) 计算机中存的是二进制的补码,所进行的是补码运算,再转化成原码可得最终结果。

                3) 一个数的二进制&1可得该数二进制最低位是0还是1.

                4) 若想将一个数的二进制第N位 置为0,则可将1左移N-1位后按位取反,再与该数二进制做与运算,即(~(1<<(N-1)))& 该数二进制。

                5) 若想将一个数的二进制第N位 置为1, 则可将1左移N-1位后与该数二进制做或运算,即(1<<(N-1)) | 该数二进制。

4. 赋值操作符

        赋值操作符分为  (简单赋值)、   ( 加等    减等    乘等    除等    模等    左移等    右移等    按位与等    按位或等     按位异或等 )复合赋值符。

        =   等(简单赋值)   将符号右边的赋值给符号左边。

        +=  加等 、-=  减等、 *= 乘等、 /=  除等、 %= 模等、 <>=  右移等、 &=  按位与等、 |=  按位或等、 ^= 按位异或等  这些操作符都是将  符号两边先进行计算再赋值给左边。  

举例: int  x = 5;

            x = x + 5; 也可以写成 x += 5;  它们是完全等价的。

            int   y = 8;

            y = y * 8; 也可以写成 y *= 8;   它们也是完全等价的。

   其它复合赋值操作符也同上述用法相同,不再一一举例说明。

        ​​​​​​​注意事项:

        赋值操作符是可以连续使用的哦。

5. 单目操作符

        所谓单目操作符也就是说操作符只对一个操作数起作用。上面我们所列举那些操作符都是属于双目操作符,也就是说双目操作符要有左边和右边两个操作数的。

        单目操作符分为 逻辑非  负   正   取地址  求操作数类型长度  二进制位按位取反   前/后自增   前/后自减  解引用  强制类型转换 操作符。

        !   逻辑非操作  也就是“不是”的意思 。 非真即假, 非假即真。

         -    负  表示负值   2为正值   -2表示负值。

         +   正  表示正值    一般都省略不写

         &   取地址符   一般用于指针变量中, int a = 10;  int *p = &a; 此时指针变量p获取的是变量a的地址。

         sizeof  求操作数类型长度操作符     int a = 5;  sizeof (a) 求出的就是变量a所占的字节大小。sizeof 求变量的长度时()可以省略,但求类型长度时不能省略。

         ~  按位取反操作符    用来对一个二进制数按位取反,即 将1 变 0, 0 变 1; 

         ++(前/后)自增     都是用来将一个操作数自增,但前自增(++i)是先++,后使用。后自增(i++)是先使用,后自增。

         --  (前/后)自减      都是用来将一个操作数自减,但前自减( -- i)是先--,后使用。后自减     ( i -- )是先使用,后自减。

         *   解引用操作符     其意思是对其得到操作数(必须为指针类型)所指变量的引用。举例:int a = 10; int * pa = &a;  * pa = 20; 此时通过解引用操作符将指针变量指向的a的值修改为20了。

       () 强制类型转换操作符   将某一类型强制转换为符号内的类型。 int a = (int)3.1415;           

好了,通过这篇文章的的内容,我们学到了C语言操作符的 算术操作符移位操作符位操作符赋值操作符单目操作符,今天的分享到这里了,下期我们会继续讲解C语言操作符的 关系操作符、逻辑操作符、条件操作符、逗号表达式及下表引用、函数调用和结构成员访问操作符。

 

          ​​​​​​​        

          ​​​​​​​        ​​​​​​​