您的位置:首页 > 其它

C学习笔记(七)运算符与表达式

2016-07-16 10:15 337 查看
1. 算术运算符——自增,自减运算符

例1

int num ;

int i = 2;

num = (i++) + (i++)+ (i++) + (i++) ;
结果:num = 6; i = 6;

解析:运算符的结束标志:分号;逗号,函数括号()

例2

int num;
int i = 2;
num = (++i) + (++i) +(++i) +(++i);


结果:num = 19; i = 6;

解析:先算左边两表达式的值 num = 4+4+5+6

例3

int i = 2;
func(i++,++i); // <span style="font-family: Arial, Helvetica, sans-serif;">func(3,2)</span>
int i = 2;
func(++i,++i,i++,++i,i++); //func(7,7,4,7,2)




int i = 2;
func(i++,++i,i,i++,++i); //func(5,6,6,3,6)
解析:++i被替换为变量名,i++被替换成数值,变量仍是变量

2.关系运算符

> <  == >= <=  

注意:常量写在左边        if(6 == num)
3.逻辑运算符

与&& 或|| 非!

短路与 短路或

4.位操作运算符

(1)按位与运算及应用

&,双目运算符,其功能是参与运算的两个数字对应的二进制位相与,只有对应的二进位均为1时,结果位才为1,否则为0,参与运算的数已补码方式出现

应用:清零特定位:掩码mask中特定位置0

            取某数特定位:掩码mask中特定位置1
例 保留 m ~n位

unsigned int mask = (unsigned int)(((~(unsigned int)0) >> (32 - (n - m +1))) << m )</span>


有符号数:左移0补位 ,右移符号位补位
无符号数:左/右 0 补位

(2)按位或运算及应用

应用:某些位置1,其他位不变

(3)按位异或运算及应用

应用:使特定位取反

不引入第三变量,交换a,b

方法一:

a = a ^ b;
b = a ^ b;
a = a  ^ b;
方法二:(当a,b为大数时,易溢出)

a = a + b;
b = a - b;
a = a - b;
方法三:(除数不能为0)

a = a * b;
b = a / b;
a = a / b;


(4) C语言性能优化:使用位操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: