运算符是告诉编译程序执行特定算术或逻辑操作的符号,C语言中有
四大运算符:算术运算符、关系逻辑运算符、位操作符、赋值运算符,其中:
- 算术运算符有:
- (减) +(加) * (乘) /(除) %(取模) --(自减) ++(自增)
- 关系运算符有:
>(大于) >= (大于等于) <(小于) <= (小于等于)、 == (等于) !=(不等于)
- 逻辑运算符有:
&&(与) ||(或) !(非)
- 位运算符有:
&(按位与) |(按位或) ^(按位异或) ~(按位取反) <<(二进制左移运算符) >>(二进制右移运算符)
注:位运算符只能用于整形数据,如果对float和double类型进行位运算会报错。
- 赋值运算符有:
=(赋值运算符) +=(加且赋值) -=(减且赋值) *=(乘且赋值) /=(除且赋值) %=(取模且赋值) <<=(左移且赋值) >>=(右移且赋值) &=(按位与且赋值) ^=(按位异或且赋值) |=(按位或且赋值)
除了以上还有几个特殊的:
sizeof() :返回变量大小,返回值类型是无符号整型;
& :取地址符,给出变量的地址;
* :解引用,根据内存地址,找到地址所对应的内容。
运算符优先级:C语言中,运算符优先级决定术语的表达分组,这会影响一个表达式是如何进行评估计算。某些运算符的优先级高于其他运算符,不清楚运算符的优先级可能会导致程序出BUG,这是在实际开发中需要着重注意的问题。
C语言常用运算符的优先级:
- 算术运算符:乘、除和求余(*,/,%)级别高于加减(+,-);
- 按位左移(<<)和位右移(>>);
- 关系运算符:大小关系(>,>=,<,<=)级别高于相等不相等关系(==,!=);
- 按位与(&);
- 按位异或(^); “或”表示按位或(|); “逻”表示逻辑运算符:逻辑与(&&)级别高于逻辑或(||);
- 条件运算符(? :);
- 表示赋值运算符(=,+=,-=,*=,/=,%=,>>=,<<=,&=,^=, |=,!=)。