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;

}