C语言运算符总结
## 乘除运算符
1. 双目*运算符 a*b a和b的积
2. /运算符 a/b a除以b所得到的商 (整数之间运算的时候需要舍弃小数点之后的值)
3. %运算符 a%b a除以b所得到的的余数(a和b之间必须都是整数)
## 加减运算符
4. 双目+运算符 a+b a和b的值
5. 双目-运算符 a-b a减去b的值
## 单目算数运算符
6. 单目+运算符 +a a的值
7. 单目-运算符 -a 对a进行符号取反后的值
## 基本赋值运算符(赋值运算符)
8. 基本赋值运算符 a=b 把b的值赋给a
## 类型转换运算符
9. 类型转换运算符 (类型名)a 把a的值转换为指定数据类型对应的值
## 相等运算符
10. ==运算符 a==b 如果a和b的值相等则为1,不等则为0(结果的类型为int)
11. !=运算符 a!=b 如果a和b的值不等则为1,相等则为0(结果的类型为int)
【注】在=和=之间以及!和=之间不可加空格。
## 关系运算符
12. <运算符 a<b a小于b时结果为1,反之为0(结果的类型为int)
13. >运算符 a>b a大于b时结果为1,反之为0(结果的类型为int)
14. <=运算符 a<=b a小于等于b时结果为1,反之为0(结果的类型为int)
15. >=运算符 a>=b a大于等于b时结果为1,反之为0(结果的类型为int)
【注】=只能放右边,其它格式都是错误的。
## 条件运算符
16. 条件运算符 a?b:c 如果a不为0,则结果是b的值,否则结果为c的值
【注】只有条件运算符属于三目运算符,其他的运算符都是单目或者双目运算符。
## 逻辑运算符
17. 逻辑与运算符 a&&b 如果a和b都不为0,则表达式的结果为1,否则结果为0(结果的类型int)
18. 逻辑或运算符 a||b 如果a和b中有一个不为0,则表达式的结果为1,否则结果为0(结果的类型int)
【注】&&运算符在a的判断结果为0时不会对b进行判断。而||运算符相反,当a的判断结果不为0时不会对b进行判断。此种情况称之为短路求值。
## 逻辑非运算符
19. 逻辑非运算符 !a 当a的值是0的时候值为1,当a的值不是0的时候值为0(它的结果是int类型)
【注】德摩根定律:x&&y和!(!x||!y)相等
x||y和(!x&&!y)相等
## 复合赋值运算符
20. 复合赋值运算符 a@=b 和a=a@b一样(只是对a的判断仅进行一次)@=是这其中的一个:*= /= %= += -= <<= >>= &= ^= |=
## 后、前置递增、递减运算符
21. 后置递增运算符 a++ 使a的值增加1(该表达式的值是增加前的值)
22. 后置递减运算符 a-- 使a的值减少1(该表达式的值是减少前的值)
23. 前置递增运算符 ++a 使a的值增加1(该表达式的值是增加后的值)
24. 前置递减运算符 --a 使a的值减少1(该表达式的值是减少后的值)
## 下标运算符
25. 下标运算符 a[b] 从数组a的首个元素算起,访问b个元素后的元素
【注】第一个元素的下标为0。元素个数为n的数组的各元素为a[0]到a[n-1]。
## 函数调用运算符
26. 函数调用运算符 x(arg) 向函数x传递实参arg并调用(当实参有多个时,用逗号分隔)。(如果返回值类型不是void)生成函数x返回的值
【注】函数调用的时候传递的只是参数的值,因此调用函数时使用的实参既可以是变量,也可以是常量。
## sizeof运算符
27. sizeof运算符 sizeof a 求a(对象、常量、类型名等)的长度
【注】其可判断包括char型在内的所有数据类型的长度。sizeof(char)为1,sizeof(short)为2,sizeof(int)为2,sizeof(long)为4。
## 按位运算符
28. 按位与运算符 a&b 按位计算a和b的逻辑与
29. 按位或运算符 a|b 按位计算a和b的逻辑或
30. 按位异或运算符 a^b 按位计算a和b的逻辑异或
31. ~运算符(按位求反运算符) ~a 计算a的反码(将每一位取反之后的值)
【注】这些运算符的操作数必须是整数类数据类型或者枚举型。如果应用于浮点型等数据类型的操作数,编译时就会出错。
## 位移运算符
32. <<运算符 a<<b 将a左移b位。右面空出的位用0填充
33. >>运算符 a>>b 将a右移b位
【注】这些运算符的操作数必须是整数类数据类型或者枚举型。
## 逗号运算符
34. 逗号运算符 a,b 按顺序判断a和b,整个表达式最终生成b的判断结果
【注】对a仅进行判断,判断结果会被省去。而对b进行判断所得到的类型和值,就是逗号表达式“a,b”的类型和值。
## 取址运算符
35. 单目运算符& &a 取得a的地址(生成指向a的指针)
## 指针运算符
36. 单目运算符* *a a指向的对象
## 句点运算符
37. .运算符 a.b 表示结构体a的成员b
## 箭头运算符
38. ->运算符 a->b 用指针访问结构体a中的成员b
{参考书籍:第三版明解c语言入门篇}