操作符
分类:
算术操作符
移位操作符
位操作符
赋值操作符
单 操作符
关系操作符
逻辑操作符
条件操作符
逗号表达式
下标引 、函数调 和结构成员
算术操作符
+ - * / %
除 %操作符之外,其他的 个操作符可以作 于整数和浮点数。
对于/操作符如果两个操作数都为整数,执 整数除法。 只要有浮点数执 的就是浮点数
除法。
%操作符的两个操作数必须为整数。返回的是整除之后的余数。
移位操作符
<< 左移操作符
>> 右移操作符
右移操作符
移位规则:
先右移运算分两种:
1. 逻辑移位
左边 0填充,右边丢弃
2. 算术移位左边 原该值的符号位填充,右边丢弃不要移动负数位
int num = 10; num>>-1;//error
位操作符
位操作符有:
& //按位与 | //按位或 ^ //按位异或 注:他们的操作数必须是整数
复合赋值符
+= -= *= /= %= >>= <<= &= |=
单 操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型 度(以字节为单位) ~ 对 个数的 进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引 操作符) (类型) 强制类型转换
自增自减操作符
//++和--运算符
//前置++和-- //对于前置的++和--来说: #include <stdio.h> int main()
{
int a = 10;
int x = ++a; //先对a进 增,然后对使 a,也就是表达式的值是a 增之后的值。x为11。 int y = --a; //先对a进 减,然后对使 a,也就是表达式的值是a 减之后的值。y为10; return 0;
}
//后置++和--
#include <stdio.h> int main()
{
int a = 10;
int x = a++; //先对a先使 ,再增加,这样x的值是10;之后a变成11; int y = a--; //先对a先使 ,再 减,这样y的值是11;之后a变成10; return 0;
}
逻辑操作符
&& 逻辑与|| 逻辑或
区分逻辑与和按位与
区分逻辑或和按位或
1&2----->0
1&&2---->1
1|2----->3
1||2---->1
隐式类型转换
char a,b,c; ...
a = b + c;
C的整型算术运算总是 少以缺省整型类型的精度来进 的。为 获得这个精度,表达式中的字符和短整型操作数在使 之前被转换为普通整型,这种转换称为『整型提升』。
b和c的值被提升为普通整型,然后再执 加法运算。加法运算完成之后,结果将被截断,然后再存储于a中。