运算符
一.算术运算 + - * / % ++ --
1.对除法
(1).如果是两个整型数相除,此时相当于是整除的效果
(2).除法运算中 除数不能为 0
2.对取余
(1).除数不能为0
(2).求余运算,运算数不能是小数。必须是整数
(3).结果的符号 ,取决于 左操作数 的符号
3.在混和运算时注意优先级和结合性
优先级 --- 不同优先级的运算 混合运算时,高优先级的先结合
结合性 --- 同一优先级的运算 混合运算时,按照结合性进行结合。
运算的对象的个数 //单目
//双目
//三目
4.在运算时会发生隐式转换
从右到左是必转,从下到上是低精度到高精度
5.强制类型转换
(类型)运算数
//强制类型转换 需要注意 ,并不会影响运算数本身
6.++自增 --自减
++ 自增 --- 表示一次增加1
int a = 1;
a++ //后置加加 --- 先用(表达式的结果) 后加(让i自增)
++a //前置加加 --- 先加(让i自增) 后用(表达式的结果)
注意:
1. a++ ++a如果单独使用,效果上没有区别
2. 先用后加 或 先加后用,是参与到别的运算中时,才发挥作用
3. 运算数,必须是一个可修改变量
4. 浮点类型也可以自增自减
5. ++a相比于 a++效率要高一些,因为a++在运算时会开辟一块临时地址存放表达式结果
6. 计算机在运算时使用贪心法:
从左到右逐个扫描,将字符尽可能多的结合成c语言运算符
Eg:i+++++i
i ++ ++ + i
((i++)++) + i
二.赋值运算 = += -= *= /=
1.int a;
a = 10; //赋值运算
//赋值表达式
//结果 就是a的值
//类型 就是a的类型
a=(b=(c=10)) //可以连续赋值
2.+= //赋值运算
a += 1 // a = (a + 1)
a -= 1 // a = a - 1
3.不同类型间混合赋值:
int a;
a = 1.23;
//高进度 => 低精度
double/float => 整型 ==> 精度丢失
//低精度 => 高精度
整型 //int => short
//long => int
//short => char
长类型=>短类型 //高位截断
短类型=>长类型
无符号短类型 =>长类型 //高位补0
有符号短类型 =>长类型 //符号位扩展 (高位补符号位)
三.逗号运算(顺序求值运算符): ,
1.语法:
表达式1,表达式2,表达式3, ...,表达式n
常见于for(sum = 0,i =0,j = 0;2;3)
2.逗号运算的过程:
1+2,a++,3+4 //从左到右,挨个运算
//逗号运算表达式的结果 --- 是整个式子中最后一个表达式运算的结果