C语言操作符 进阶 (常见错误及细节)

1.算术操作符

+ - * / %

% 只适用于整数类型运算,其余运算符也可用于浮点运算。


2.移位操作符

左移:左边丢弃,右边补0;

右移:

         不同编译器采取的移位方式不同,所有有了“右移”的程序不可移植

        1.逻辑移位:左边补0

        2.算术移位:左边补符号位   

 3.赋值操作符

1.写易于调试和阅读的赋值语句。

例如:   r = s+(t =u-v) /3;

              /*等价于*/

            t = u-v;

            r = s+t/3;

2. 字符型变量赋值的截短问题

char ch;

...

while((ch = getchar()) ! =EOF)


4.符合赋值符

   在复杂的语句中他更容易使用,简化了程序,防止错误发生。

5.单目操作符

1.CAST(强制类型转换)

(float)a;

(int)a;


2.sizeof()运算符

sizeof(a = b  +1);//a的值不变,sizeof()不计算内部的数值


返回整形变量的字节数 sizeof(int)

返回变量x所占的字节数sizeof x


6.关系操作符

多使用括号,保证算式的逻辑顺序和运算优先级符合要求


7.逗号操作符

xxxx,xxxxx,xxxxx,  //计算的是最后一个表达式。

这样写可以简化运算



求取二进制中一的个数:

方法1

while (u)   
	{
		count++;
		u = u & (u - 1);
	}

内部运算过程。记住这个写法 u = u&(u-1)

U= 9

1001                    count =1
1001&1000 

1000                   count = 2

1000&0111

0000                  over

方法2

if (num & 1 == 1)
        {
		count++;
	}
	num = num >> 1;

内部运算过程 

1001&0001

0001  count = 1;

0100&0001

0000

0010&0001

0000

0001&0001 

0001 count = 2







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值