1. C运算符(Operator)的分类
根据运算性质 | 根据运算所需的对象(操作数个数) |
---|---|
赋值运算符 | 一元(单目)运算符 |
算术运算符 | 二元(双目)运算符 |
增1和减1 | 三元(三目)运算符 |
类型强转 | |
关系运算符 | |
逻辑运算符 | |
位运算符 |
2. 算术运算符
包括+
、-
、*
、/
、%
、++
、--
。
3. 关系运算符
包括<
、>
、<=
、>=
、==
、!=
。
4. 逻辑运算符
包括&&
、||
、!
。
5. 条件运算符
( ? : )
C语言中唯一的三目运算符。
6. 位运算符
运算符 | 含义 | 语法 | 效果 |
---|---|---|---|
<< | 左移 | a<<x | 整数a按二进制位左移x位 |
>> | 右移 | a>>x | 整数a按二进制位右移x位 |
& | 位与 | a&b | 整数a和b按二进制对齐,按位进行与运算(除了11得1,其它均为0) |
| | 位或 | a|b | 整数a和b按二进制对齐,按位进行或运算(除了00得0,其它均为1) |
^ | 位异或 | a^b | 整数a和b按二进制对齐,按位进行异或运算(相同为0,不同为1) |
~ | 位取反 | ~a | 整数a的二进制的每一位进行0变1,1变0的操作 |
7. 赋值运算符
讲解赋值运算符之前,我们先来回顾变量的概念!
问题1:赋值运算符和数学中的等号有何区别?
回答1:
- 有方向性
- 左值和右值类型应一致
问题2:赋值运算符几种形式?
回答2:
1)简单赋值(Simple Assignment)
变量 = 表达式
优点:赋值运算符的优先级
2)多重赋值(Multiple Assignment)
变量1 = 变量2 = 表达式
优点:赋值运算符的结合性
3)复合的赋值(Combined Assignment )
变量1 运算符op= 表达式
优点:一种简写的且执行效率更高的赋值
问题3:如何给变量赋值 ?
回答3:
1)赋值表达式语句( Expression Statement )
变量 = 表达式 ;
2)定义变量的同时为变量赋值——初始化(Initialize)
类型 变量 = 表达式 ;
8. 算术表达式的优先级
9. 算术表达式的结合性
10.关于算术运算符经常会碰到的题目
问题1:输出一个三位整数的个位、十位和百位数字
关键1:如何分离个位、十位、百位数字?
问题2:如何生成一个指定范围(如1~100)内的随机数?
关键2:
1)对p求模取余:H(k) = k % p
将一个大范围的自然数集合映射到一个只有p个元素的小集合上
2)随机函数rand()
生成一个在0~32767之间的随机数
回答2:
magic = rand() % 100 ; //0~99
magic = rand() % 100 + 1; //1~100
问题3:生活中的求余运算例子
关键3:一天是24小时,一个星期为7天,一年是12个月
问题4:判断某数能被另一个数整除
关键4:判断x % 5 的结果是否为 0