C语言入门之操作符汇集

1.算术运算符

加+ 减- 乘 除/ 求模% 自增++ 自减–*

一元运算符:+(正号)、-(负号)、++(增1)、–(减1)。
二元运算符:+(求和)、-(求差)、(求积)、/(求商)、%(求余)。
一元运算符的优先级一般高于二元运算符。
加+ 减- 乘运算
都是既可以用于浮点数运算又可以用于整数运算。
相除运算中,两个操作数(除数和被除数)只要有一个为浮点数,结果就为浮点数,两个操作数都为整数,结果也取整数,且被除数不能为0,否则编译出错。
求模运算中,两个操作数都必须为整数,且不能对0求模。
自加(减)运算又分前置++(–)与后置++(–)。前置++(–)是对原操作数加一(减一)再引用,后置++(–)是对原操作数引用后再加一(减一),这两种自增运算结果在有返回值的情况下结果都是操作数加(减)一。

2.关系运算符

大于> 小于< 大于等于>= 小于等于<= 不等于!= 等于==
前 4 个的优先级高于最后两个
关系运算符结果返回值为true或false
4.逻辑运算符
与 && 全真结果为真,有零结果就为假
或 || 全假结果为假,有1 结果就为真
非 !非0则为真
这三种逻辑运算符,逻辑非 ! 的优先级最高,逻辑与 && 次之,逻辑或 || 优先级最低

4.位操作符

&(与)、|(或)、^(异或)、~(取反)
左移<<等效于乘二,左边抛弃,右边补零
右移>>等效于除以2,在右移运算中右边抛弃,左边空位由零补充还是符号位呢?
其实答案由具体的 C 语言编译器实现来决定。在通常情况下,如果要进行移位的操作数是无符号类型的,那么空出的位将用 0 进行填充;如果要进行移位的操作数是有符号类型的,则 C 语言编译器实现既可选择 0 来进行填充,也可选择符号位进行填充。
如果被移位的操作数的长度为 n,那么移位的数量必须大于等于 0 且小于 n

5.赋值运算符

C 语言共提供了 11 个赋值运算符,均为二元运算符,其中仅有一个为基本赋值运算符 =,其余 10 个均是复合赋值运算符,即:
基本赋值运算符:=。
复合赋值运算符:+=(加赋值)、-=(减赋值)、*=(乘赋值)、/=(除赋值)、%=(求余赋值)、 <<=(左移赋值)、>>=(右移赋值)、&=(按位与赋值)、|=(按位或赋值)、*A=(按位异或赋值)。
赋值操作的优先级较低,仅高于逗号运算符

6.*运算符和&运算符

&是取地址运算符
取址运算符的操作数必须是在内存中可寻址到的地址。换句话说,该运算符只能用于函数或对象(例如左值),而不可以用于位字段,以及那些还未被存储类修饰符 register 声明的内容。
*运算符是解引用运算符,当已具有一个指针,并且希望获取它所引用的对象时使用。

7.下标运算符[]

借助于下标运算符 [](subscript operator),可以获取数组中单独的元素。下标运算符需要两个操作数。在最简单的情况下,一个操作数是一个数组名称,而另一个操作数是一个整数。

8.点运算符与箭头运算符

箭头运算符的左操作数必须是一个指针,它指向一个结构或联合类型。右操作数是该结构或联合成员的名字点
点运算符的左操作数必须是一个结构或者一个联合,而右操作数必须是该类型(结构或联合)成员的名字。

9.条件运算符

条件运算符(conditional operator)有时候也称为三元运算符,因为它是唯一需要 3 个操作数的运算符:
条件 ? 表达式1 : 表达式2
在计算完条件之后,有一个序列点。如果结果不等于 0(换句话说,如果条件计算结果为 true),则只有第二个操作数(也就是表达式 1)会被计算,并且表达式 1 的值就是整个表达式的结果。

10.逗号运算符

逗号运算符是二元运算符:
表达式1 , 表达式2

逗号运算符确保操作数被顺序地处理:先计算左边的操作数,再计算右边的操作数。右操作数的类型和值作为整个表达式的结果。左操作数只是为了副作用需要而被计算,它其值会被丢弃。

猜你喜欢

转载自blog.csdn.net/weixin_42962924/article/details/83276983
今日推荐