c语言中关于操作符部分的学习,可以主要分为两个部分:操作符和表达式。

这里首先是列举各种操作符,在C语言中,一般主要的操作符有这么几种:算数操作符,移位操作符,位操作符,赋值操作符,单目运算符,关系操作符,逻辑操作符,条件操作符,逗号表达式以及比较特殊的几个操作符。

算数操作符

算数操作符,主要是:+ , -,  *,  /, %

这些都是比较常见的,不光是在C语言中学习到,事实上从小我们学习数学都常用到他们,所以这里没什么多说的,就是有几点注意事项:

  1. 除了取模运算,也就是取余数的%操作符,其他的几个操作符都是可以用于整数运算和浮点数运算的;
  2. %取模运算在这里特殊的在于,符号两边的操作数都必须是整数;
  3. /操作符,还是与数学上一样,注意第二个操作数不是0就行,这里如果两个操作数都是整数,就按整数除法运算;而只要其中不管哪个操作数为浮点数,就按照浮点数除法运算。

移位操作符

移位操作符,分别是左移操作符 << 和右移操作符 >> ,(PS:移位操作,是特别针对二进制序列进行的操作)

左移操作的 移位规则:

  将所有有效位整体向左移动,具体移动多少位是自己决定的,并抛弃左边最高位,并在右边空出来的位置补0

右移操作的 移位规则:

  则是抛弃将所有有效位整体向右移动,并且挤掉最低有效位,并在空出来的最高位补0

至于有符号数的符号位是否影响移位运算,这里不细说。后面再详细讨论。

位操作符

位操作符有:&,|, ^,作用分别是:

所谓按位与,就是同一位上相同取1,相异为0;而按位或,是有一个1就是取1,两个都是0,则取0;而按位与或,则是同一位相异取1,相同取0

赋值操作符

  =   是用来进行赋值的

这里要注意这个等号在C语言里不是等号的意思,它是给变量写入一个值。而等于在C语言里,我们是用==来定义的。而事实上,将=与==混用,是我们学习编程初期,比较常犯的一个错误。然而,有时候,你在程序里把他们混用了,编译时,却没有报错,但在程序运行时却会发生不可预知的错误。

相应的对赋值操作,为了简化代码,将赋值与其他操作进行结合,就有了复合赋值符的概念:+=,-=, *=, /=, %= , <<=, >>=,&=,|=,^=。

都是将符合赋值的左右操作符进行相应的操作,并将结果覆盖性的重新赋给左操作数。

单目运算符

这里就是要注意,将取地址操作与按位与进行区分。区分的办法也不难,就是取地址,它是对一个变量进行取地址,所以只是操作符右边有操作数;而与运算,是两个操作数之间的,所以,与操作符两边都会有操作数。

并且,要注意前置++,前置--,是先进行运算再使用数据;而后置++,后置--,则是先使用数据,在进行运算。

关系操作符

所谓关系操作,就是进行判定,两个操作数,或两个表达式的结果,或者操作数与表达式之间的关系。没有什么多说的,只要注意,向上面一样,区分=与==的区别就行。

逻辑操作符

逻辑与,逻辑或的部分,需要区分他们与按位与,按位或的差别。以及他们自己的特点:逻辑操作表达式中的短路现象这么一个,比较特别的情况。

逗号表达式

exp1,exp2,exp3,...expN

逗号表达式这里,是把多个表达式放在一起,使用逗号进行分隔。逗号表达式从左向右依次序执行,但整个表达式的结果一般是最后一个表达式影响的,是最后一个表达式的结果

条件操作符

条件操作符的一个典型应用就是三目运算符,比如我们进行比较大小的:

return (>)?:

特殊的几个操作符

另外还可以列举的几个特殊的操作符有:

1.下标引用操作符[ ]

  下标引用操作符一般是用于数组元素的访问:array[index],这个array就是数组名,而这个索引值index就是指的数组元素的位置,而数组元素的存储的位置,从0到n-1。

2.函数调用操作符()

  对于函数调用操作符,()里面的一般是传递给函数的参数,当然函数里可以不对数据进行操作,那么这时就可以不往里面传参数了

3.访问结构体成员的. 和访问结构体指针的->

  对于结构体这块,有:结构体变量.成员名      结构体指针->成员名

其实对结构体指针,也可以用*(结构体指针).成员名,但是这样一般会引起歧义,因而使用了指向操作符->来代替。

C语言操作符学习总结的更多相关文章

  1. C语言操作符

    C语言操作符的分类: 算术操作符 逻辑运算符 位操作符     赋值操作符 单目操作符 关系操作符 条件操作符 逗号表达式 数组下标引用 函数调用 结构体成员使用 大体上,C语言的操作符具体就这么些, ...

  2. C语言课程学习的总结

    C语言课程学习的总结 学习C程序这门课一年了,这是我们学的第一门专业课.在大学里,C语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程.所以作为我这个计算机专业的学生来说当 ...

  3. [转]C语言指针学习经验总结浅谈

    指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...

  4. C语言(函数)学习之strstr strcasestr

    C语言(函数)学习之[strstr]&[strcasestr]一.strstr函数使用[1]函数原型char*strstr(constchar*haystack,constchar*needl ...

  5. 【Go语言】学习资料

    这段时间一直在看Go语言,6月3日Apple发布了swift发现里面竟然也有许多Go语言的影子,截至现在每天都在感觉到Go语言的强大.确实值得一学 今天在这里给园友们推荐一些Go语言的学习资料 网站 ...

  6. C语言操作符优先级

    C语言操作符优先级 优先级 运算符 含    义 要求运算 对象的个数 结合方向 1 () [] -> . 圆括号 下标运算符 指向结构体成员运算符 结构体成员运算符 自左至右 2 ! 逻辑非运 ...

  7. 远离go path,弃用go get,使用go mod 进行go语言的学习

    标题说的是go语言的学习,因为我也没做过开发 文章要解决的仅仅是一个问题 当你使用go get 无论如何get不到所需的包的问题 第一步就是下载goland 新手极其推荐goland,因为直接使用gl ...

  8. Dart语言快速学习上手(新手上路)

    Dart语言快速学习上手(新手上路) // 声明返回值 int add(int a, int b) { return a + b; } // 不声明返回值 add2(int a, int b) { r ...

  9. D02-R语言基础学习

    R语言基础学习——D02 20190423内容纲要: 1.前言 2.向量操作 (1)常规操作 (2)不定长向量计算 (3)序列 (4)向量的删除与保留 3.列表详解 (1)列表的索引 (2)列表得元素 ...

随机推荐

  1. UI(一)

    1.AfxWinMain 首先,MFC程序先执行到TheApp实例化对象也就是通过这句CTestApp the App来实例化对象的然后,调用CTestApp构造函数分配内存空间 然后,就调用了Afx ...

  2. 【转载】 socket recv 和 read

    转自: http://blog.csdn.net/rankun1/article/details/50488989 send函数工作原理: send函数只负责将数据提交给协议层. 当调用该函数时,se ...

  3. HTML5 canvas画图

    HTML5 canvas画图 HTML5 <canvas> 标签用于绘制图像(通过脚本,通常是 JavaScript).不过,<canvas> 元素本身并没有绘制能力(它仅仅是 ...

  4. angularjs中URL中的#号问题,$locationProvider.html5Mode(true)刷新404

    解决办法原文地址:https://blog.csdn.net/weixin_36185028/article/details/72179568 angularjs支持两种url模式,hash模式和ht ...

  5. using指令都用了这么多年了,其实还真没懂!

    在C语言中,我们经常使用#include<stdio.h>指令来导入标准输入输出库,这确实很好理解,相当于把代码复制到当前的程序中. 但在C#语言中,当我们写Console程序时,经常在第 ...

  6. 基础拾遗 C# Json 与对象相互转换

    方法一.JavaScriptSerializer 方法二.JsonConvert 示例: Web API项目 1.新建 Model: namespace WebApi{ public class Pr ...

  7. 【node.js】模块系统、函数

    为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码.JSON 或者编译过的C/C++ 扩 ...

  8. IFsvnadmin svn界面管理工具

    安装部署if.svnadmin 工具 前提是安装好svn服务器及apache+php服务器. yum -y install subversion mod_dav_svn 安装完建立一个目录用来作为sv ...

  9. 记录一下mac上码云的使用

    项目比较多的时候用第三方的托管平台管理自己的代码还是挺不错的,记录一下码云的基本使用 分两部分进行说明: 一 :怎么上传自己本地的代码到码云.(方式,通过终端输入命令行) 具体的步骤: 1 :首先得在 ...

  10. LeetCode872. Leaf-Similar Trees

    自己的代码: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = ...