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. 你可能不知道的 10 条 SQL 技巧,涨知识了!

    转自:http://mp.weixin.qq.com/s?__biz=MjM5NzM0MjcyMQ==&mid=2650076293&idx=1&sn=38f6acc759df ...

  2. 【1】python-正则表达式语法规范与案例

    正则表达式的用法与案例分析 2018-08-24 21:26:14 [说明]:该文主要为了随后复习和使用备查,由于做了word文档笔记,所以此处博文没有怎么排版,没放代码,以插入图片为主, 一.正则表 ...

  3. TeamViewer app案例分析

    产品 产品名 TeamViewer远程app 选择原因 远程连接软件是不时之需,当有时私人电脑没有在身边而又需要操作电脑时,远程控制TeamViewer这个软件能帮我们大忙. 调研与评测 1.第一次上 ...

  4. MySQL复制(一)复制原理探讨

    1 复制概述 1.1.复制解决的问题 数据复制技术有以下一些特点: (1) 数据分布 (2) 负载平衡(load balancing) (3) 备份 (4) 高可用性(high availabilit ...

  5. springMVC參数传递

    本文是本人在学习网络视屏springMVC的过程中的学习笔记. 为了更便于理解我决定从实际使用的角度解释. 我们在浏览器输入地址 http://localhost:8080/springMVC6/us ...

  6. MySQL 导出远程服务器数据库 为 sql文件

    MySQL 导出远程服务器sql文件 mysqldump -h192.168.1.111 –P3306 -uroot -ppassword --default-character-set=utf8 t ...

  7. jQuery放大镜插件

    (function($) { $.fn.magnifier = function(options){ var options = $.extend({ bigWidth: 400, //大图高度 bi ...

  8. B. A Leapfrog in the Array

    http://codeforces.com/problemset/problem/949/B Dima is a beginner programmer. During his working pro ...

  9. 跨域(Cross-Domain) AJAX for IE8 and IE9

    1.有过这样一段代码,是ajax $.ajax({ url: "http://127.0.0.1:9001", type: "POST", data: JSON ...

  10. IOCP详解

    http://blog.csdn.net/piggyxp/article/details/6922277 ps: 原作者很厉害了, 把一个iocp模型讲解的这么形象,不过在实践过程中发现一些细节说得有 ...