LinuxC关于运算符的一些问题

1.C语言运算符的分类?

1)算术运算符:用于各类数值运算,包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)

2)关系运算符:用于比较运算,包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)

3)逻辑运算符:用于逻辑运算,包括与(&&)、或(||)、非(!)

4)位操作运算符:参与运算的量,按二进制位进行运算,包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)

5)赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=、-=、*=、/=、%=)和复合位运算赋值(&=、|=、^=、>>=、<<=)

6)条件运算符:这是一个三目运算符,用于条件求值(?:)

7)逗号运算符:用于把若干表达式组合成一个表达式(,)

8)指针运算符:用于取内容(*)和取地址(&)

9)求字节运算符:也能给予计算数据类型所占的字节数(sizeof)

10)特殊运算符:有括号()、下标[]、成员(->、.)


2.有关运算符的优先级

!>算术运算符>关系运算符>&&>||>条件运算符>赋值运算符>逗号运算符


3.一些容易出错的优先级问题

1).的优先级高于*

例:*p.f   应是*(p.f)对p取f偏移作为指针,然后进行接触引用操作。

2)[]高于*

例:int*ap[] 应是int*(ap[])ap是个元素为int指针的数组

3)函数()高于*

  例:int*fp() 应是int*(fp())fp是个函数,返回int*

4)==高于位操作

  例:(val&mask!=0)  应是val&(mask!=0)

5)==高于赋值符     

  例:c=getchar()!=EOF  应是c=(getchar()!=EOF)

6)算术运算符高于移位运算符   

  例:msb<<4+lsb  应是msb<<(4+lsb)

7)逗号运算符优先级最低


4.条件运算符的基本使用方法

一般形式:    表达式1?表达式2:表达式3

求值规则为:如果表达式1为真,则以表达式2的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值


5.使用条件表达式应该注意什么?

1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符

2)条件运算符“?”和“:”是一对运算符,不能分开单独使用

3)条件运算符的结合方向是从右至左


6.++、--操作符

i++:先将i的值带入表达式进行运算,再将i的值+1

++i:先将i的值加1,再将i的值带入表达式进行运算

i--,--i与上述规则相同


7.位运算

1.按位与(&)应用     

1)清零特定位(mask中特定位置0,其他位为1,s =s&mask)

2)取某数中指定位(mask中特定位置1,其他位为0,s = s&mask)

2.按位或(|)应用     

1)指定位置1,其余位不变(mask中特定位置1,其他位为0,s = s|mask)

3.按位异或(^)应用

1)使特定位的值取反(mask中特定位置1,其他位为1,s = s^mask)

2)不引入第三变量,交换两个变量值


8.使用位操作的优点?

1)可以减少减法和取模的运算,提高运算效率

        2)在嵌入式系统的编程中,它的另一个最典型的且使用十分广泛的是位间的与(&)、或(|)、非(~)操作。


9.运算符的结合方向?

左到右:特殊运算符,逗号运算符,算术运算符中加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%),关系运算符,逻辑运算符中与(&&)、或(||),位操作运算符中位与(&)、位或(|)、位异或(^)、左移(<<)、右移(>>),
右到左:算术运算符中自增(++)、自减(--), 逻辑运算符中非(!),位操作运算符中位非(~),赋值运算符,条件运算符,指针运算符,求字节运算符


10.运算符的目分类

单目:算术运算符中自增(++)、自减(--),逻辑运算符中非(!),位操作运算符中位非(~),指针运算符

双目:算术运算符中加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%),关系运算符,逻辑运算符中与(&&)、或(||),位操作运算符中位与(&)、位或(|)、位异或(^)、左移(<<)、右移(>>),赋值运算符

三目:条件运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值