C语言操作符

C语言操作符有以下分类:

算数操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号操作符 下标引用 、函数调用和结构成员

一、算数操作符

加(+) 减(-) 乘(*) 除(/) 求模(%)

1)%操作符只能用于两个整数之间的运算,其他的操作符可以作用于整数和浮点数。

2)对于/操作符,当两个操作数都是整数时执行整数除法。只要有一个操作数是浮点数就是浮点数除法。

3)%操作符参与运算的两个整数返回的是整除之后的余数,/操作符参与运算的两个整数返回的是整除之后的商。

二、移位操作符

1.左移操作符(<<)
左边抛弃,右边补0

2.右移操作符(>>)
1)逻辑移位–左边用0填充,右边丢弃。

警告:对于移位运算符,不要移动负数位,这个是标准未定义的。移位的过程中实际上没有赋值,所以自身的值不会变。

三、位操作符

按位与(&) 按位或(|) 按位异或(^)

1)位操作符他们的操作数必须都是整数。

2)参与运算的操作数,是将他们的二进制(比特位)进行逐位运算。

3)&操作符只有当两个比特位都是1时与的结果才为1,以外均为0。

4)| 操作符只有当两个比特位都是0时或的结果才为0,以外均为1。

5)^操作符参与运算的是两个相同的操作数结果就会清零,任一个数与0按位异或得到的二进制序列不变,与1按位异或得到的二进制序列每位均取反。

四、赋值操作符

只有赋值操作符(=)可以让你改变一个你之前不满意的值。任何两个操作数参与运算时只要不经过赋值运算,这两个操作数其自身的值是不会发生变化的!

注意:赋值运算和初始化是两个不同的概念!初始化时(int i=0;),系统会为这个变量(i)开辟空间同时默认这是空间的值(0)。而赋值运算时(i=1;),是将这个空间的值改变(将1改为0)。

复合赋值符:+= -= *= /= %= >>= <<= &= |= ^=
复合操作符在左右操作数之间执行指定的运算,然后把结果赋值给左操作数。

五、单目操作符

逻辑反(!) 负值(-) 正值(+) 取地址(+) 求操作数的类型长度(sizeof) 对一个数的二进制数按位取反(~) 自增运算(++) 自减运算(–) 间接访问操作符、解引用操作符(*) 强制类型转换((类型))

!:逻辑非操作

~:对一个数的二进制按位取反

+,-:正值,负值

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

前置++,–:在操作数的值被修改之后才返回这个值

后置++ –:在操作数的值被修改之前就返回这个值

*:间接访问操作符(必须为指针)

&:取地址,操作符返回一个指向它的操作数的指针

cast:强制类型转换,用于修改操作数的数据类型

1)以上操作符参与运算的只需要一个操作数即可。

2)自增操作符分为前置和后置,前置是先将值进行+1操作,然后再去用这个数。后置是先将数拿出来去使用,使用完了之后再进行+1操作。

3)强制类型转换仅仅改变了空间的类型,并没有改变这个数据,和转化是不同的概念。

4)切记sizeof是操作符,并不是一个函数。

六、关系操作符

大于(>) 大于等于(>=) 小于(<) 小于等于(<=) 相等(==) 不相等(!=)

1)对浮点数来说要特别注意,并没有严格意义上的相等。它是用精度范围来判断两个数是相等的。

2)执行相等操作(==)时,可能会不小心写成赋值操作(=)。例如:if(x=1)//处理事务

因此建议做相等比较时,将常数写在左边(1==x)。例如:if(1==x)//处理事务

这样不小心输错成if(1=x),系统就能在编译时报错

七、逻辑操作符

逻辑与(&&) 逻辑或(||)

1)&&操作符前后两个操作数均为真结果才为真。

2)|| 操作符前后两个操作数均为假结果才为假。

3)逻辑与和按位与是不同的概念,前者的结果是布尔型,不是1(真)就是0(假),而后者是将二进制进行逐位运算的,结果是个数。

八、条件操作符

exp1 ? exp2 : exp3 ;

三目运算符:当exp1为真时结果为exp2,假时结果为exp3

类似于:if(exp1) {exp2} else {exp3}

exp1 ? exp2 : exp3 为真,其表达式结果为exp2,否则为exp3.eexp1为真,其表达式结果为exp2,否则为exp3.

exp1为真,其表达式结果为exp2,否则为exp3.

九、逗号表达式

exp1,exp2,exp3,……expN

1)逗号表达式,就是用逗号隔开多个表达式。

2)逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

十、下标引用、函数调用和结构成员

1)[ ]

操作数:一个数组名+一个索引值

2)( )

函数调用操作符

一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

3)访问一个结构体的成员

. 结构体 . 成员名(通过结构体直接访问内部元素)

-> 结构体指针 -> 成员名(通过指针访问结构体内部元素)

注意:结构体、数字、指针都属于数据类型,只不过是自定义数据类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值