day02
1、运算符
- 算术运算符
- 单目运算符:+ 正;- 负;
- 双目运算符:* / %(这三个同级) > + -(这两个同级)注意:前边三个的优先级大于后边的两个;
- 双目运算符两边运算数的类型必须一致才能进行运算。所得结果的类型与运算数的类型一致。例如,表达式1.0/2.0的运算结果为0.5;表达式1/2的运算(整除)结果为0(因为是整型,会将运算结果强制转化)
- 如某双目运算符两边运算数的类型不一致,如一边是整型数,一边是实型数时,系统会自动把整型转换为实型数,使运算符两边的类型达到一致后,再进行运算。
- 算数运算符的优先级:() > 单目【+ 、-】 > 双目(【* / %】 【+ -】) 注:【】括号里是同级
- 注意算术运算符的结合方向都是自左向右的。
- 自增和自减运算符
- 注意:该运算符只适合单个变量,不能用于表达式。例如:(x+y)++这种是非法的。
- 结合方向自右向左
- 赋值运算符
- 结合方向自右向左
- 关系运算符
- < <= > >= == != (条件成立则真,结果为1;不成立时为假,结果为0)
- 结合方向自左向右
- 逻辑运算符
- !(单目:自右向左) > (&& ||(双目:结合方向自左向右))
- 例如:int a=!(1<2)||(2>5);这里将!!(1<2)||(2>5)的结果0(假)赋给a。
- 逗号运算符
- 返回第二个表达式的值。例如:c=(2a,2b)返回的是2*b的值。
- 结合方向自左向右
- 条件运算符
- 三目运算符:? :
- 对于c?e1:e2,若c为真,返回e1;若c为假,返回e2;
- 结合方向:自右向左
- 长度运算符
- sizeof:注意这个是运算符,不是函数
- 结合方向自右向左
- 位运算符
- ~(单目:结合方向自右向左) > (&(按位与) |(按位或) ^(按位异或(相同为0不同为1)) (双目:结合方向自左向右))
- 移位运算符
- <<(左移乘2) >>(右移除2)
- 结合方向自左向右
- 位复合赋值运算符
- &= |= ^= <<= >>=
- 结合方向自右向左
- 强制类型转换符
- (类型名)(表达式) 如(int)(x+y)
- 总结
- 初等运算符(() [] -> .) > 单目运算符 > 算术运算符(先乘除,后加减) > 关系运算符 > 逻辑运算符(不包括!) > 条件运算符 > 赋值运算符 > 逗号运算符