[bo][un]独孤小梦[/un] 在 2008-7-3 20:40 的发言:[/bo]
…………一般C下的switch不是很常用!而且功能也没有别的大,你只需要了解一下就OK了!
一般使用别的来代替!
看看这份代码,会改变你对switch的认识:
register n = (count + 7) / 8; /* count > 0 assumed */
switch (count % 8)
{
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while (--n > 0);
}
switch本质上,是对连续if判断常数的汇编级别的优化,通过使用“跳转表”代替不连续的级联跳转,提高代码效率。
因为现在OO思想的泛滥,所以大家可能觉得switch功能很弱,但是注意这么一个问题,只有与常数比较,才能使用跳转表的方式进行优化,而如果是一个对象(比如string),因为其比较本质上是一个子程序,所以无法应用这种优化方式,没有提供这种switch正是C的思想的体现。