标签:编译错误 数据 char 移位操作 小结 单位 运算 十进制 操作
移位操作符(<<,>>)
ps:不要对负数进行移位操作,这是未定义行为!
"<<"左移操作符:
1)按二进制移位;
2)左移n位相当于十进制的*2的n次方;
3)左边抛弃,右边补0;
4)左移后原数值在没有被赋值的情况下是不变的;
#include<stdio.h>
#include<stdlib.h>
int main() {
int num = 10;
printf("%d\n",num<<1 );
printf("%d\n", num);
printf("%d\n", num=num<<1);
system("pause");
return 0;
}
结果为:
">>"右移操作符:
1)按二进制移位;
2)右移n位相当于十进制的 / 2的n次方;
3)逻辑移位:左边补0,右边抛弃
算数移位:左边补符号位,右边抛弃
4)右移后原数值在没有被赋值的情况下是不变的;(情况同上,不再做过多赘述)
复合操作符(+= ,-= ,*= ,/= ,%= ,>>= ,<<= ,&= ,|= ,^= )
复合运算符与其他运算符功能一样,但可以使代码更简洁
int x=10;
x=x+10;
x+=10;//复合赋值,效果与上式相同
单目操作符(!,- ,+ ,& ,sizeof ,~,--,++,* ,(类型))
"!"逻辑反操作
"-"负值
"+"正值
"&"取地址
"sizeof"操作数的类型长度(以字节为单位):
编译过程中求值,运行时才申请内存
"~"对一个数二进制按位取反
"--"前置,后置 --
"++"前置,后置++:
前置后置的区别:
a)不取表达式的值,等价
b)取表达式的值:
前置,返回自增(自减)后的值;
后置,返回自增(自减)前的值
" * "解引用操作符
"(类型)"强制类型转换:
此处会发生“截断”现象,即把一个占字节数多的变量赋值给一个占字节数少的变量,会把高位截断。把一个占字节少的变量赋值给一个占字节数多的变量,高位会进行补位(补符号位)
标签:编译错误 数据 char 移位操作 小结 单位 运算 十进制 操作
原文地址:https://blog.51cto.com/14233363/2396812