C语言运算符和表达式——算术运算符
目录
运算符(Operator)的分类
根据运算性质
根据运算所需的对象(操作数个数)
表达式(Expression)
操作数(Operand)
算术运算符(Arithmetic Operators)
除法:
求余:
算术表达式的优先级
算术表达式的结合性
实例——分离数位
如何进行更复杂的数学运算呢?
运算符(Operator)的分类
根据运算性质
*赋值运算符
*算术运算符
*增1和减1
*类型转换
*关系运算符
根据运算所需的对象(操作数个数)
*一元(单目)运算符
*二元(双目)运算符
*三元(三目)运算符
表达式(Expression)
操作数(Operand)
*运算对象(常量、变量、函数)

算术运算符(Arithmetic Operators)
除法:
算术表达式

11/5=2 11.0/5=2.2
整数除法 浮点数除法
(Integer Division) (Floating Division)
*a and b are integers *a or b or both are floats
求余:
算术表达式

操作数必须是整数,返回a与b相除之后的余数(Remainder)
11%5=1 11%(-5)=1 (-11)%5=-1
算术表达式的优先级
问题:当算术表达式包含多个运算符时,如何确定运算顺序?
*出现不同类型的运算符时
*运算符的优先级(Order of Precedence)——从高到低运算

算术表达式的结合性
问题:当算术表达式包含 多个运算符时,如何确定运算顺序?
两类运算符的优先级相同时
*运算符的结合性(Associativity)
*左结合——从左向右计算 →
*右结合——从右向左计算←
*巧妙使用圆括号改变运算顺序——从内往外运算
实例——分离数位
问题:输出一个三位整数的个位、十位、和百位数字
关键:如何分离个位、十位、百位数字?
个位:例——153%10=3 153-1100-510=3
十位:例——153%100/10=5 153/10%10=5
百位:153/100=1
问题:求余运算还有什么用 ?
对p求模取余:H(k)=k%p
*将一个大范围的自然数集合映射到一个只有p个元素的小集合上
随机函数rand()
*生成一个在0~32767之间的随机数
问题:如何生成一个指定范围(如 1~100)内的随机数?
*magic=rand()%100; //0~99
*magic=rand()%100+1; //1~100
如何进行更复杂的数学运算呢?
常用的标准数学函数
#include <math.h>

