c语言中关于操作符部分的学习,可以主要分为两个部分:操作符和表达式。
这里首先是列举各种操作符,在C语言中,一般主要的操作符有这么几种:算数操作符,移位操作符,位操作符,赋值操作符,单目运算符,关系操作符,逻辑操作符,条件操作符,逗号表达式以及比较特殊的几个操作符。
算数操作符
算数操作符,主要是:+ , -, *, /, %
这些都是比较常见的,不光是在C语言中学习到,事实上从小我们学习数学都常用到他们,所以这里没什么多说的,就是有几点注意事项:
- 除了取模运算,也就是取余数的%操作符,其他的几个操作符都是可以用于整数运算和浮点数运算的;
- %取模运算在这里特殊的在于,符号两边的操作数都必须是整数;
- /操作符,还是与数学上一样,注意第二个操作数不是0就行,这里如果两个操作数都是整数,就按整数除法运算;而只要其中不管哪个操作数为浮点数,就按照浮点数除法运算。
移位操作符
移位操作符,分别是左移操作符 << 和右移操作符 >> ,(PS:移位操作,是特别针对二进制序列进行的操作)
左移操作的 移位规则:
将所有有效位整体向左移动,具体移动多少位是自己决定的,并抛弃左边最高位,并在右边空出来的位置补0
右移操作的 移位规则:
则是抛弃将所有有效位整体向右移动,并且挤掉最低有效位,并在空出来的最高位补0
至于有符号数的符号位是否影响移位运算,这里不细说。后面再详细讨论。
位操作符
位操作符有:&,|, ^,作用分别是:
所谓按位与,就是同一位上相同取1,相异为0;而按位或,是有一个1就是取1,两个都是0,则取0;而按位与或,则是同一位相异取1,相同取0
赋值操作符
= 是用来进行赋值的
这里要注意这个等号在C语言里不是等号的意思,它是给变量写入一个值。而等于在C语言里,我们是用==来定义的。而事实上,将=与==混用,是我们学习编程初期,比较常犯的一个错误。然而,有时候,你在程序里把他们混用了,编译时,却没有报错,但在程序运行时却会发生不可预知的错误。
相应的对赋值操作,为了简化代码,将赋值与其他操作进行结合,就有了复合赋值符的概念:+=,-=, *=, /=, %= , <<=, >>=,&=,|=,^=。
都是将符合赋值的左右操作符进行相应的操作,并将结果覆盖性的重新赋给左操作数。
单目运算符
这里就是要注意,将取地址操作与按位与进行区分。区分的办法也不难,就是取地址,它是对一个变量进行取地址,所以只是操作符右边有操作数;而与运算,是两个操作数之间的,所以,与操作符两边都会有操作数。
并且,要注意前置++,前置--,是先进行运算再使用数据;而后置++,后置--,则是先使用数据,在进行运算。
关系操作符
所谓关系操作,就是进行判定,两个操作数,或两个表达式的结果,或者操作数与表达式之间的关系。没有什么多说的,只要注意,向上面一样,区分=与==的区别就行。
逻辑操作符
逻辑与,逻辑或的部分,需要区分他们与按位与,按位或的差别。以及他们自己的特点:逻辑操作表达式中的短路现象这么一个,比较特别的情况。
逗号表达式
exp1,exp2,exp3,...expN
逗号表达式这里,是把多个表达式放在一起,使用逗号进行分隔。逗号表达式从左向右依次序执行,但整个表达式的结果一般是最后一个表达式影响的,是最后一个表达式的结果
条件操作符
条件操作符的一个典型应用就是三目运算符,比如我们进行比较大小的:
return (1>2)?1:0
特殊的几个操作符
另外还可以列举的几个特殊的操作符有:
1.下标引用操作符[ ]
下标引用操作符一般是用于数组元素的访问:array[index],这个array就是数组名,而这个索引值index就是指的数组元素的位置,而数组元素的存储的位置,从0到n-1。
2.函数调用操作符()
对于函数调用操作符,()里面的一般是传递给函数的参数,当然函数里可以不对数据进行操作,那么这时就可以不往里面传参数了
3.访问结构体成员的. 和访问结构体指针的->
对于结构体这块,有:结构体变量.成员名 结构体指针->成员名
其实对结构体指针,也可以用*(结构体指针).成员名,但是这样一般会引起歧义,因而使用了指向操作符->来代替。
原文地址:https://www.cnblogs.com/sunjiyuan/p/10097906.html