这几天学习了C语言的操作符,今天在博客中做一下自我学习的总结。
首先是操作符的分类:
算数操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,关系操作符,逻辑操作符,条件操作符,,逗号表达式,下表引用、函数调用以及结构成员。
算数操作符:
包括 + - * / %
1.除了%操作符之外,其他的几个操作符可以用于整数和浮点数。
2.对于/操作符如果两个操作符都是整数,执行整数除法,而只要有浮点数执行的就是浮点数除法。
3.%操作符的两个操作数必须是整数。返回的是整除之后的余数。
移位操作符
<< 左移操作符
>> 右移操作符
左移操作符规则:左边抛弃,右边补零。
右移操作符规则:
分为两种。1.逻辑移位 左边用0填充,右边直接丢弃
2.算数移位 左边用该值的符号位填充,右边丢弃
位操作符
& // 按位与
| // 按位或
^ //按位异或
他们的操作数必须为整数
赋值操作符
=
复合赋值符
+= -= *= /= %= >>= <<= &= |= ^=
单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置 --
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
关系操作符
> >= < <= !=(用于判断 不相等) ==(用于判断 相等)
逻辑操作符
&& 逻辑与 || 逻辑或
条件操作符
exp1 ? exp2 : exp3
先求解表达式1,
若其值为真(非0)则将表达式2的值作为整个表达式的取值,
否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。
逗号表达式
exp1,exp2,exp3,.... expN
逗号表达式,就是用逗号隔开的多个表达式。逗号表达式,从左向右依次执行。整个表达式的结果是最后的一个表达式的结果。
下标引用、函数调用和结构成员
1.[] 下标引用操作符
操作数: 一个数组名+一个索引值
2.()函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,剩下的操作数就是传递给函数的参数。
3.访问一个结构的成员
.结构体.成员名
->结构体指针 ->成员名
表达式求值
表达式求值的顺序一部分是由操作符的优先级和结合行决定。
同样,有些表达式的操作数再求值的过程中可能需要转换为其他类型。
隐式类型转换
c的整型算数UN算总是至少以去缺省整型类型的精度来进行的。
为了获得这个精度,表达式中的字符和短整型操作数再使用之前被转换为普通整型,这种转换称为整形提升。
算数转换
如果某给个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作就无法进行。
操作符的属性
复杂表达式的求值又三个影响的因素。
1.操作符的优先级
2.操作符的结合性
3.是否控制求值顺序
总结:这里列出的是操作符的一些基本概要,没有上具体的代码操作,我们所写出的表达式如果不能通过操作符确定唯一的具体计算路径,那么就是表达式存在问题。