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= 91001 count =1
1001&1000 1000 count = 21000&01110000 over
方法2
if (num & 1 == 1){count++;}num = num >> 1;
内部运算过程
1001&00010001 count = 1;0100&000100000010&000100000001&0001 0001 count = 2