1.C语言右移最高位是1的问题
a)对于有符号整数变量(char,short,int),最高位是1右移过程高位补1.
b)对于有符号整数变量(char,short,int),最高位是0右移过程高位补0.
c)对于有符号整数变量(char,short,int),(最高位是1的)右移高位补1是符合负数的除法,绝对值向-1(0xffffffff)靠近。
d)对于无符号整数变量:unsigned int 等,高位无论是1还是0,都统一补0.
2.switch特点:
a)比if-else复杂,但是据说从汇编上肯定比if-else跳转速度快。
b)switch内部是是变量,每个case后面都是常量,不能用变量.
c)switch不支持浮点数,包括switch和case后面变量和常量。
d)if_else系列处理问题更多,switch主要限制与整数变量与多个常量的开关模式。
比如:if(i>1000 && i<2000)大范围的问题switch不能解决)。
e)switch的case可以自动排除重叠数据,比如:'b'与sizeof(double)+90不能同时存在。
3.switch的注意事项
a)不要忘记break,否则就会脱落到下一个case。
b)在某些情况下故意不用break。
例如:
int i=90;
switch(i)
{
case 90:
case 89;
case 88:
break;
case 90:
case 189;
case 188:
break;
}