一起聊聊C语言中有趣的操作符

大家学习C语言的时候经常会用到许许多多的操作符,今天呢,我就对C语言中一些简单且实用的操作符来做个小小的总结,当然,肯定会有一些纰漏,欢迎大家留言评论进行补充

其实C语言中的操作符就我们经常使用的来说呢,大致可以有:单目运算符,双目运算符(1.算术运算符,2.逻辑运算符,3.关系运算符,4.移位运算符,5.赋值运算符,6.逗号表达式),三目运算符(条件表达式),前述操作符。

1.单目操作符

逻辑反
~ 按位取反
++ 自增(分为前置++,后置++)
-- 自减(分为前置--,后置--)
- 负值
+ 正值
* 解引用
& 取地址
(type) 强制类型转换
sizeof

操作数的类型长度(以字节为单位)

注意:当++,--两个运算符放在变量的前面的时候,表示先对变量进行操作然后再使用。

           当放在后面时,就是先使用在进行操作。

2.运算操作符

+

加法运算
- 减法运算
* 乘法运算
/ 除法运算
% 取模运算(一个变量/另一个变量取余数)

:a=3,b = 5

b/a=1,

b%a=2,

a%b =3

3.逻辑运算符

&& 逻辑与 真&&假——>假
|| 逻辑或 真&&假——>真
& 按位与 参与运算的两数字二进制相与。对应位上均为1时,结果才为1,否则为0。
| 按位或 参与运算的两数字二进制相或。对应位上均为0时,结果才为0,否则为1。
^ 按位异或 参与运算的两数字二进制相异或。对应位上相异时,结果才为1,否则为0。

例:a=5,  b=8

二进制为:a=0101,b=1000(只取了二进制里后四位,前面的所有位都是0)

a&b = 0000

a|b=1101

a^b = 1101

~a = 1010

~b = 0111

4.关系运算符

> 大于
< 小于
>= 大于等于
=< 小于等于
== 等于
!= 不等于

注意:“==”是判断两个数是否相等,而“=”是属于赋值操作

5.移位运算符

<<(左移) 按二进制形式把所有数字向左移动对应位数,高位舍弃,低位补0
>>(带符号右移) 按二进制形式把所有数字向右移动对应位数,低位舍弃,高位的空位补符号位。
>>(无符号右移) 按二进制形式把所有数字向右移动对应位数,低位舍弃,高位空位补0。

例:a = -5

       b = 5

a:

    原码:1000  0000  0000  0000  0000  0000  0000  0101

    反码:1111  1111  1111  1111  1111  1111  1111  1010

    补码:1111  1111  1111  1111  1111  1111  1111  1011

b;

    原码:0000  0000  0000  0000  0000  0000  0000  0101

    反码:0000  0000  0000  0000  0000  0000  0000  0101

    补码:0000  0000  0000  0000  0000  0000  0000  0101

则  a <<  2  = 1111  1111  1111  1111  1111  1111  1110  1000  =  -20(即:为原数据*2^2)

      a >>  2 = 1111  1111  1111  1111  1111  1111  1111  1110   =  -2  (即:为原数据/2^2)

      b <<2   = 0000  0000  0000  0000  0000  0000  0001  0100   =   20(即:为原数据*2^2)

      b>>2    =  0000  0000  0000  0000  0000  0000  0000  0001   =  1   (即:为原数据/2^2)

6.赋值运算符

= 赋值运算符:变量 = 表达式
+= 加后赋值:    变量 += 表达式 
-= 减后赋值:     变量-=表达式
*= 乘后赋值:     变量*=表达式
/= 除后赋值:      变量./=表达式
%= 取模后赋值:  变量%=表达式
<<= 左移后赋值:   变量<<=表达式
>>= 右移后赋值:   变量>>=表达式
&= 按位与后赋值: 变量&=表达式
|= 按位或后赋值: 变量|=表达式
^= 按位异或后赋值:变量^=表达式

7.逗号表达式

用逗号隔开的多个表达式,从左往右依次计算表达式,逗号表达式的优先级最低

例:x=1,;y=1;

      z=x++,y++,++y

此时的x,y,z分别为2,3,1

因为不仅要考虑逗号表达式,还要考虑优先级问题。

8.条件表达式

条件?表达式1:表达式2

如果条件为真,则表达式1,如果条件为假,则表达式2

例:a = 1;b = 2

   c=  (a>b)?a+1:b+1

这时C=3

9.前述操作符

1.[]

数组下标引用

接收连个操作数,即:数组名和索引

array[]={1,2,1,3,4,6,7,5,9}

array[4] = 4;

2.()

该操作符可以接受函数名与参数作为操作数。

  注意:至少有一个操作数,即函数名

3.结构体成员变量

     a. "  -> "用于访问结构体成员变量的地址。

     b." .  "   用于访问结构体成员变量的内容

好了,我的操作符总结已经完成了,希望可以给你带来帮助,当然,如果有查缺补漏,也欢迎留言评论

对了,上面内容中操作符全用红色标识出来了,切勿看错。

好了,不说了,日常打代码去了。

猜你喜欢

转载自blog.csdn.net/volatile_0524/article/details/81214233