1:
先从算数操作符说起:
eg: * / % + - 并且它们的优先级依次降低,结合性从左向右
%操作符的两个操作数必须要为整数,获取的是整除后的余数,(也称为模运算),
eg ; %可以用于取出整数中1234的每一位运算,具体程序自行编写;
除%操作符以外,其它几位操作符都可用于整数和浮点数;
对于/操作符两个数都为整数结果才为整数,如果其中一个为浮点数,那结果就是浮点数
2:
移位操作符
右移位操作符 >> 左移位操作符<< 都为双目运算符
<< 把左边的运算数的全部二进制左移若干位,高位丢弃,低位补0;
eg:
实际上num在没有被赋值前自身的值不变
>>把左边的运算数的全部二进制右移若干位,
它有两种运算规则,不同的编辑器可能规则不一样
1. 逻辑移位
左边用0填充,右边丢弃
2. 算术移位
左边用原该值的符号位填充,右边丢弃
左边用0填充,右边丢弃
2. 算术移位
左边用原该值的符号位填充,右边丢弃
主要用算数操作符
3:位操作符
&//按位与
| //按位或
^ //按位异或
| //按位或
^ //按位异或
~ //取反
他们的操作数必须是整数
特别注意按位运算符|和&逻辑运算符||和&&的区别
他们的操作数必须是整数
特别注意按位运算符|和&逻辑运算符||和&&的区别
按位^异或可以实现两个不创建临时变量交换两个变量的值:a=a^b; b=a^b; a=a^b 具体逻辑将两个数值转换为2进制异或就可明白。
4:赋值操作符
+= -= *= /= %= >>= <<= &= |= ^=
上述运算符使用时可进行简化书写
eg: int a=1;
a=a+1;
简化:a+=10;
5:单目操作符
!逻辑反操作 主要用于判断
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度 计算类型长度,数组所占空间大小等
~ 对一个数的二进制按位取反
-- 前置、后置-- (--a,++a,先对a+1/-1,再进行运算)
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度 计算类型长度,数组所占空间大小等
~ 对一个数的二进制按位取反
-- 前置、后置-- (--a,++a,先对a+1/-1,再进行运算)
++前置、后置++ (a--,a++,先运算,再对a+1/-1)
* 间接访问操作符 用于指针运算符
((类型))强制类型转换
6:逻辑操作符
* 间接访问操作符 用于指针运算符
((类型))强制类型转换
6:逻辑操作符
&&逻辑与
|| 逻辑或
主要区分
|| 逻辑或
主要区分
逻辑与和按位与
逻辑或和按位或
逻辑或和按位或
eg:
3&2----->0
3&&2---->1
3|2----->7
3||2---->1
3&&2---->1
3|2----->7
3||2---->1
7:条件运算符
(exp1 ? exp2 : exp3)
eg;
ret = (a>b? 1:0)
结束:如果a大于b ret=1,否则等于0
8:逗号表达式
(exp1,exp2,exp3,...)
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
9:单引号,双引号
eg:
1,'1',"1"
第一个整形常量,32位系统下占4个byte
第二个是字符常量,占1个byte
第三个是字符串常量,占2个byte