1. 算术操作符:+,-,*,/,%
除了取模运算,其余几个操作符既可以用于整型值也可用于浮点型值。
2. 移位操作符:<<,>>
3. 位操作符:AND(&),OR(|),XOR(^)【异或(相同为0,相异为1)】
4. 复合赋值符:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,!=
赋值运算符:=
5. 单目运算符:
- !:逻辑反
- ++和–:自增和自减
- -和+:用于产生操作数的负值和操作数的值
- &:取操作数地址
- sizeof:判断它的操作数的类型长度,单位为字节
sizeof(int) //返回int整形变量的字节数,结果取决于使用的环境
sizeof x //返回变量x所占的字节数
sizeof (x) //返回变量x所占的字节数
sizeof a[] //返回数组a的长度,以字节为单位。
- ~:求补
- *:间接访问操作符,与指针一起使用,用于访问指针指向的值
int a, *b;
b = &a; //&取a的地址并将其赋予给指针b
- (类型):强制类型转换,用于显式地把表达式的值转换为另外的类型
int a;
(float)a; //将整形变量a的值转换为浮点型
6. 关系操作符:>,>=,<,<=,!=,==
7. 逻辑操作符:&&,||
8. 条件操作符:
expression1? expression2 : expression3
9.
- C的下标总是从0开始,并且不会对下标进行有效性检查,除了优先级不同,下标引用操作和间接访问表达式时等价的。映像关系如下:
array[NUM];
*( array + (NUM) ); //下标引用实际上时通过这种形式实现的
- 函数调用接受一个或多个操作数。第一个操作数是希望调用的函数名,剩余的操作数就是传递给函数的参数。把函数调用以操作符的方式实现意味着“表达式”可以代替“常量”作为函数名。
- 操作符 -> 用于访问一个结构的成员。当由一个指向结构的指针而不是结构本身想要去访问它的成员时,就需要使用 -> 操作符而不是 . 操作符。
10. C不具备任何的布尔类型,所以用整数来代替。规则为:0是假,任何非零值为真。
11. 如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数转化为另一个操作数的类型,否则操作无法进行。
寻常算数转换:
long double
double
unsigned long int
long int
unsigned int
int
如果某个操作数的类型在上面这个列表排名较低,那么它首先将转换为另一个操作数的类型然后执行操作。
12. 表达式的值如果依赖于求值的顺序,那么它在本质上就是不可移植的。如:有符号值的右移操作数是不可移植的。
2016.9.26