C语言操作符学习总结
c语言中关于操作符部分的学习,可以主要分为两个部分:操作符和表达式。
这里首先是列举各种操作符,在C语言中,一般主要的操作符有这么几种:算数操作符,移位操作符,位操作符,赋值操作符,单目运算符,关系操作符,逻辑操作符,条件操作符,逗号表达式以及比较特殊的几个操作符。
算数操作符
算数操作符,主要是:+ , -, *, /, %
这些都是比较常见的,不光是在C语言中学习到,事实上从小我们学习数学都常用到他们,所以这里没什么多说的,就是有几点注意事项:
- 除了取模运算,也就是取余数的%操作符,其他的几个操作符都是可以用于整数运算和浮点数运算的;
- %取模运算在这里特殊的在于,符号两边的操作数都必须是整数;
- /操作符,还是与数学上一样,注意第二个操作数不是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语言操作符学习总结的更多相关文章
- C语言操作符
C语言操作符的分类: 算术操作符 逻辑运算符 位操作符 赋值操作符 单目操作符 关系操作符 条件操作符 逗号表达式 数组下标引用 函数调用 结构体成员使用 大体上,C语言的操作符具体就这么些, ...
- C语言课程学习的总结
C语言课程学习的总结 学习C程序这门课一年了,这是我们学的第一门专业课.在大学里,C语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程.所以作为我这个计算机专业的学生来说当 ...
- [转]C语言指针学习经验总结浅谈
指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...
- C语言(函数)学习之strstr strcasestr
C语言(函数)学习之[strstr]&[strcasestr]一.strstr函数使用[1]函数原型char*strstr(constchar*haystack,constchar*needl ...
- 【Go语言】学习资料
这段时间一直在看Go语言,6月3日Apple发布了swift发现里面竟然也有许多Go语言的影子,截至现在每天都在感觉到Go语言的强大.确实值得一学 今天在这里给园友们推荐一些Go语言的学习资料 网站 ...
- C语言操作符优先级
C语言操作符优先级 优先级 运算符 含 义 要求运算 对象的个数 结合方向 1 () [] -> . 圆括号 下标运算符 指向结构体成员运算符 结构体成员运算符 自左至右 2 ! 逻辑非运 ...
- 远离go path,弃用go get,使用go mod 进行go语言的学习
标题说的是go语言的学习,因为我也没做过开发 文章要解决的仅仅是一个问题 当你使用go get 无论如何get不到所需的包的问题 第一步就是下载goland 新手极其推荐goland,因为直接使用gl ...
- Dart语言快速学习上手(新手上路)
Dart语言快速学习上手(新手上路) // 声明返回值 int add(int a, int b) { return a + b; } // 不声明返回值 add2(int a, int b) { r ...
- D02-R语言基础学习
R语言基础学习——D02 20190423内容纲要: 1.前言 2.向量操作 (1)常规操作 (2)不定长向量计算 (3)序列 (4)向量的删除与保留 3.列表详解 (1)列表的索引 (2)列表得元素 ...
随机推荐
- 长距离单历元非差GNSS网络RTK理论与方法总结(未完)
2018-11-04 1.状态空间: 状态空间是控制工程中的一个名词.状态是指在系统中可决定系统状态.最小数目变量的有序集合. 而所谓状态空间则是指该系统全部可能状态的集合.简单来说,状态空间可以 ...
- Winform启动时隐藏不显示
我最终用了这个方法:1.MainForm的构造方法中添加: public MainForm() { InitializeComponent(); this.ShowInTaskbar = false; ...
- php实现简单的单链表
<?php /** * 建立一个链表,节点的data为数组,记录一个id,完成链表所以操作 */ //结点,结点数据data定义为一个数组,id和value class Node{ public ...
- 自定义ClassLoader
自定义classloader MapleClassLoader package com.maple; import java.io.*; public class MapleClassLoader e ...
- selenium+python unittest实践过程之问题杂集
1.列表选择项后直接获取文本内容获取不到,应该获取选择后显示的button的值 2.取值后的值带有空格,可以使用.strip()删除前后空格,以便断言 3.取值后有些值需要对类型进行转换才能断言成功 ...
- SQLSERVER 数据类型int、bigint、smallint 和 tinyint范围
[bigint] 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储大小为 8 个字节. [int ...
- C#根据淘宝接口网址获取客户端访问IP和网络运营商
网络运营商会为每台联网的电脑分配公网IP,如何获取它们?? 话不多说直接上代码: using System; using System.Collections.Generic; using Syste ...
- Spring源码分析(十三)缓存中获取单例bean
摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 介绍过FactoryBean的用法后,我们就可以了解bean加载的过程了 ...
- 《You dont know JS》原生函数
原生函数 原生函数,即JavaScript的内建函数(built-in function).常用的原生函数有String().Number().Boolean().Array().Object().F ...
- iPhone将NSString转换编码集为gb2312或者gbk的方法
很多时候软件读取的中文网页编码集是gb2312,所以显示出来的是乱码.这时需要将NSString文字编码转换.你可以试试以下代码 NSURL *url = [NSURL URLWithString:u ...

