本文所结合图书及视频

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

​​​​​​​        

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

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

  1. c语言程序设计中北答案详解,C语言程序设计试题及答案解析汇编.doc

    C语言程序设计试题及答案解析汇编 C语言程序设计试题 第1.2.3章 概述.类型.表达式 一.选择题 一个C程序由若干个C函数组成,各个函数在文件中的位置顺序为:( ) 任意 第一个函数必须是主函数, ...

  2. c语言中的字符串数组,详解C语言中的字符串数组

    在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include #incl ...

  3. c语言二级指针内存释放,详解C语言-二级指针三种内存模型

    二级指针相对于一级指针,显得更难,难在于指针和数组的混合,定义不同类型的二级指针,在使用的时候有着很大的区别 第一种内存模型char *arr[] 若有如下定义 char *arr[] = {&quo ...

  4. c语言遍历 json字符串,全面详解c语言使用cJSON解析JSON字符

    为什么选择cJSON来解析JSON字符串?因为简洁又简单,而且效率又快,cJSON工程文件也非常简单,仅一个.c文件和一个.h文件! 如果要自己写的话就是重造轮子了,况且效率上也不一定会比cJSON更 ...

  5. c语言随机产生10题,详解C语言的随机数生成及其相关题目

    产生随机数的基本方法 本文中,笔者将介绍c语言所提供的随机数发生器的用法.现在的c编译程序都提供了一个基于一种ANSI标准的伪随机数发生器函数,用来生成随机数.Microsoft和Borland都是通 ...

  6. php函数find的用法,c语言find函数的用法详解

    c语言find函数的用法详解 C语言之find()函数 find函数用于查找数组中的某一个指定元素的位置. 比如:有一个数组[0, 0, 5, 4, 4]: 问:元素5的在什么位置,find函数 返回 ...

  7. #转载:杨辉三角形实现过程详解-c语言基础

    杨辉三角形实现过程详解-C语言基础 十一一个人 2018-12-26 06:45:45 6465 收藏 28 最后发布:2018-12-26 06:45:45首发:2018-12-26 06:45:4 ...

  8. 数据结构殷人昆电子版百度云资源_数据结构精讲与习题详解(C语言版第2版清华大学计算机系列教材)...

    导语 内容提要 殷人昆编著的<数据结构精讲与习题详解(C语言版第2版清华大学计算机系列教材)>是清华大学出版社出版的<数据结构(C语言版)>(第2版)的配套教材,对" ...

  9. R语言可视化绘图基础知识详解

    R语言可视化绘图基础知识详解 图形参数:字体.坐标.颜色.标签等: 图像符号和线条: 文本属性: 图像尺寸及边界: 坐标轴.图例自定义等: 图像的组合: #install.packages(c(&qu ...

  10. DBus glib 各数据类型接收与发送详解—C语言(3)

    DBus glib 各数据类型接收与发送详解-C语言(3) 动机 前置知识 正文 Python 测试服务 使用 C 实现复杂数据类型的传递 DICT_DICT ObjectPath_Dict_Stru ...

最新文章

  1. Redis中列表list数据类型(增加(在左侧、右侧或指定元素前后插入数据)、获取(获取表内指定范围的元素)、更新(获取指定索引位置的元素值)、删除(删除指定元素、count))
  2. 【转载】yolo数据增强和评价方法
  3. linux下用iptables做本机端口转发方法(转载)
  4. Laravel 5.0 - Middleware (中间件)
  5. Win2003下Exchange2003部署图解之七
  6. vim表达式正则替换
  7. Oracle中的rownum不能使用大于的问题
  8. pythonidechart_django+echart数据动态显示的例子
  9. jpg如何免费转换成pdf
  10. Android 12 WiFi 框架
  11. 仿真软件计算机配置,电脑配置关于ANSYS等仿真软件,AMDcpu可选择吗?
  12. steam饥荒服务器配置修改,饥荒联机版专用服配置修改器
  13. java coap_CoAP协议-以Californium(Java)为例的CoAP初步实现
  14. 金山词霸2009sp3 (解决字典消失、屏幕不能取词问题)
  15. 知道RSS的人越少,我就越希望它能被人知道!
  16. 核心单词Word List 48
  17. 全文标明引文报告html,知网查重报告之全文(标明引文)报告单参数详解
  18. html app启动页制作,【示例】App引导页的制作
  19. 【每日AI】什么是矢量字库?
  20. 戒掉坏习惯—六种方法

热门文章

  1. 音响系统测试软件苹果,再谈汽车音响调试专用相位软件JL AUDIO Tools,苹果ios坛友的福音!|汽车数码...
  2. python 拼图验证码
  3. Spring Boot电商项目6:数据库设计与项目初始化一:数据库表设计;
  4. 网络舆情监测TOOM
  5. 根据工资计算税费html,税后工资计算器2018 个人所得税excel计算公式
  6. 【IoT】产品设计:贴片电子电容封装类型:0202封装、0402封装、0603封装、0805封装、1206封装、1210封装、1812封装、2010封装、2512封装
  7. cad打印本计算机未配置,CAD打印的基本设置详细教程
  8. NODE.JS菜鸟网总结
  9. Winhex的使用教程
  10. matlab对比度拉伸代码,图像增强常用代码