算术操作运算
*/ int b=10; int a=b*10;//CPU可能有多个周期,甚至要利用软件的模拟方法来实现惩罚,或者调用第三方库--》移植困难 int a=b+10;//CPU一个周期可以处理 %求模 n%m=res,结果为[0,m-1] 应用场景: 1.取一个范围的数: 给一个随机数,得到一个1~100的数字 (m%100)+1; 2.得到m进制的个位数 3.循环数据结构的下标
逻辑运算
真与假的选择 返回结果1/0 || && 注意:A||B不等于B||A A&&B不等于B&&A 短路特性 ~按位取反 !不等于这个值 ? : 表达式
位运算
移位符号 左移,右移
<< 左移:乘法 左移一位相当于*2(二进制的移位) 符号问题:不用考虑符号问题 >> 右移:除法 右移一位相当于/2(二进制的移位) 右移结果与符号变量有关 正确的写法:unsigned int a; 当有符号数右移,最高位 正数补0 负数补1还是补0是根据编译器来决定的 当编译器规定右移最高位补1时 int a=xxx;//一个负数 while(a){ a=a>>1; } //这是一个死循环,因为负数右移最高位补1,a永远不可能为0
& | ^ ~与 或 异或 取反
&:与 1. A & 0 =0; 作用:清除 A & 1 =A; 作用:取出 屏蔽低八位,取出高八位 int a=0x1234; a & 0xff00; 2. & : 清零器clr 清除bit5 int a; a =(a&~(0x1<<5)); |:或 1. A | 0 =A; 作用:保留 A | 1 =1; 作用:设置set 设置bit5为高电平 int a; a =(a|(0x1<<5)); 2. & : 设置器 ^ :亦或 相同为假,相异为真 交换两个数,不引入第三个数: int a=20; int b=30; a = a^b; b = a^b; a = a^b; 算法 AES 加密算法 ~ : 取反 注意:32位的常量情况下 0xf0 取反---》 0xffff ff0f
赋值运算
=
+= 、-=、&=……
内存访问符号
()圆括号 限制符 (a+b)*c; 函数访问符号 fun(); []方括号 数组 内存访问的ID符号 {}大括号 函数体的限制符 -> 地址访问 . 变量访问 &取地址符 *解引用
欢迎批评指正。