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

C语言自学之路十一(详解C语言 *** 作符一),第1张

本文所结合图书及视频

《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语言 *** 作符的 关系 *** 作符、逻辑 *** 作符、条件 *** 作符、逗号表达式及下表引用、函数调用和结构成员访问 *** 作符。


 

          ​​​​​​​        

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

 

        

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/564236.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-03
下一篇 2022-04-03

发表评论

登录后才能评论

评论列表(0条)

保存