1.算术运算符

+ - * / % 1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。 2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。 如:5.0/2 3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。5%2可以 ,但是5%2.0会报错

2.移位操作符

  1. 算术移位、逻辑移位
  2. << 左移操作符
  3. 移位规则:
  4. 左边抛弃、右边补0
  5. >> 右移操作符
  6. 移位规则:
  7. 首先右移运算分两种:
  8. 1. 逻辑移位
  9. 左边用0填充,右边丢弃
  10. 2. 算术移位
  11. 左边用原该值的符号位填充,右边丢弃
  12. 3.警告⚠
  13. 对于移位运算符,不要移动负数位,这个是标准未定义的。
  14. a = 16 ;//1000
  15. a>>1;//右移一位后:0100
  16. 注:移位操作符的操作数只能是整数。

3.位操作符

  1. & //按位与,3&5 = 1二进制的补码对应为1则为1
  2. | //按位或,3|5 = 7二进制的补码有1则为1
  3. ^ //按位异或,3^5 = 6二进制的补码相同为0,相异为1
  4. 注:他们的操作数必须是整数。
  5. 交换两个数字
  6. --------法一--------
  7. int a = 3;
  8. int b = 5;
  9. int temp = 0;
  10. temp = a;
  11. a = b;
  12. b = temp;
  13. --------法二--------
  14. int a = 3;
  15. int b = 5;
  16. a = a + b;
  17. b = a - b;
  18. a = a - b;
  19. --------法三--------
  20. int a = 10;
  21. int b = 20;
  22. a = a^b;
  23. b = a^b;
  24. a = a^b;

4.赋值操作符

赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。

  1. int weight = 120;//体重
  2. weight = 89;//不满意就赋值
  3. double salary = 10000.0;
  4. salary = 20000.0;//使用赋值操作符赋值。
  5. int a = 10;
  6. int x = 0;
  7. int y = 20; a = x = y+1;//连续赋值
  8. 这样的代码感觉怎么样?
  9. 那同样的语义,你看看:
  10. x = y+1; a = x;
  11. 这样的写法是不是更加清晰爽朗而且易于调试。
  12. 复合赋值符:+= -= *= 、/=、%=、>>=、<<=、&=、|=、^=
  13. int x = 10; x = x+10; x += 10;//复合赋值
  14. //其他运算符一样的道理。这样写更加简洁。

5.单目操作符

  1. ! 逻辑反操作
  2. - 负值
  3. + 正值
  4. & 取地址
  5. sizeof 操作数的类型长度(以字节为单位)
  6. ~ 对一个数的二进制按位取反
  7. -- 前置、后置--
  8. ++ 前置、后置++
  9. * 间接访问操作符(解引用操作符) (类型) 强制类型转换

6.关系操作符

  1. >
  2. >=
  3. <
  4. <=
  5. != 用于测试“不相等”
  6. == 用于测试“相等”

7.逻辑操作符

  1. && 逻辑与
  2. || 逻辑
  3. #include<stdio.h>
  4. int main() {
  5. /*如果结果为0,则为假,非零则为真,如题:a先用后加,a = 0,所以后续不执行,但是用完后a自增1,bd不自增
  6. */
  7. int i = 0, a = 0, b = 2, c = 3, d = 4;
  8. //如果将a的值改为1,那么在做判断的时候,判断结果为真,所以abd都执行了,
  9. //int i = 0, a = 1, b = 2, c = 3, d = 4;
  10. //i = a++ || ++b || d++;
  11. //如果这里的i改成逻辑或,那么a执行完后,bc就不执行了
  12. i = a++ && ++b && d++;
  13. printf("a = %d,\nb = %d\n c = %d\n d=%d\n", a, b, c, d);
  14. }

8.条件操作符

  1. exp1 ? exp2 : exp3
  2. #include<stdio.h>
  3. int main() {
  4. int a = 3;
  5. int b = 0;
  6. b = (a == 3 ? 3 : 2);
  7. printf("b的值为:%d", b);
  8. }

9.逗号表达式

  1. /*
  2. exp1, exp2, exp3, …expN,
  3. 逗号表达式,就是用逗号隔开的多个表达式。
  4. 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
  5. */
  6. c是多少?
  7. //代码2
  8. if (a =b + 1, c=a / 2, d > 0)
  9. //代码3 a = get_val();
  10. count_val(a);
  11. while (a > 0) {
  1. #include<stdio.h>
  2. int main() {
  3. int a = 1;
  4. int b = 2;
  5. int c = (a > b, a = b + 10, a, b = a + 1);
  6. printf("c的值为:%d", c);//13
  7. }

10.下标引用、函数调用和结构成员

  1. 下标引用操作符
    操作数:一个数组名 + 一个索引值
    1. int arr[10];//创建数组
    2. arr[9] = 10;//实用下标引用操作符。
    3. [ ]的两个操作数是arr9
  2. ( ) 函数调用操作符
    接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

3.操作符的优先级

优先级 运算符 名称或含义 使用形式 说明
1 [] 数组下标 数组名[常量表达式]

| | | () | 圆括号 | (表达式)/函数名(形参表) |

| | | . | 成员选择(对象) | 对象.成员名 |

| | | -> | 成员选择(指针) | 对象指针->成员名 |

| | 2 | - | 负号运算符 | -表达式 | 单目运算符 | | | (类型) | 强制类型转换 | (数据类型)表达式 |

| | | ++ | 前置自增运算符 | ++变量名 | 单目运算符 | | | ++ | 后置自增运算符 | 变量名++ | 单目运算符 | | | — | 前置自减运算符 | —变量名 | 单目运算符 | | | — | 后置自减运算符 | 变量名— | 单目运算符 | | | | 取值运算符 | 指针变量 | 单目运算符 | | | & | 取地址运算符 | &变量名 | 单目运算符 | | | ! | 逻辑非运算符 | !表达式 | 单目运算符 | | | ~ | 按位取反运算符 | ~表达式 | 单目运算符 | | | sizeof | 长度运算符 | sizeof(表达式) |
| | 3 | / | 除 | 表达式/表达式 | 双目运算符 | | | | 乘 | 表达式表达式 | 双目运算符 | | | % | 余数(取模) | 整型表达式/整型表达式 | 双目运算符 | | 4 | + | 加 | 表达式+表达式 | 双目运算符 | | | - | 减 | 表达式-表达式 | 双目运算符 | | 5 | | 左移 | 变量 | 双目运算符 | | | >> | 右移 | 变量>>表达式 | 双目运算符 | | 6 | > | 大于 | 表达式>表达式 | 双目运算符 | | | >= | 大于等于 | 表达式>=表达式 | 双目运算符 | | | | 小于 | 表达式 | 双目运算符 | | | | 小于等于 | 表达式 | 双目运算符 | | 7 | == | 等于 | 表达式==表达式 | 双目运算符 | | | != | 不等于 | 表达式!= 表达式 | 双目运算符 | | 8 | & | 按位与 | 表达式&表达式 | 双目运算符 | | 9 | ^ | 按位异或 | 表达式^表达式 | 双目运算符 | | 10 | | | 按位或 | 表达式|表达式 | 双目运算符 | | 11 | && | 逻辑与 | 表达式&&表达式 | 双目运算符 | | 12 | || | 逻辑或 | 表达式||表达式 | 双目运算符 | | 13 | ?: | 条件运算符 | 表达式1? 表达式2: 表达式3 | 三目运算符 | | 14 | = | 赋值运算符 | 变量=表达式 |
| | | /= | 除后赋值 | 变量/=表达式 |
| | | = | 乘后赋值 | 变量=表达式 |
| | | %= | 取模后赋值 | 变量%=表达式 |
| | | += | 加后赋值 | 变量+=表达式 |
| | | -= | 减后赋值 | 变量-=表达式 |
| | | | 左移后赋值 | 变量 |
| | | >>= | 右移后赋值 | 变量>>=表达式 |
| | | &= | 按位与后赋值 | 变量&=表达式 |
| | | ^= | 按位异或后赋值 | 变量^=表达式 |
| | | |= | 按位或后赋值 | 变量|=表达式 |
| | 15 | , | 逗号运算符 | 表达式,表达式,… | 从左向右顺序运算 |