今天看到一段代码,代码的风格与实用性无可圈之处,不过,仔细研究下,可以学到一些东西,加深了对switch的理解,代码如下
void copy(char* dst, char* src, int len){
switch(len & 7) {
default:
while (len > 7) {
len -= 8;
*dst++ = *src++;
case 7:*dst++ = *src++;
case 6:*dst++ = *src++;
case 5:*dst++ = *src++;
case 4:*dst++ = *src++;
case 3:*dst++ = *src++;
case 2:*dst++ = *src++;
case 1:*dst++ = *src++;
}
}
}
显然,这是函数实现了一个字符串的拷贝。从中还是能看出,switch的本质还是goto语句。
void copy(char* dst, char* src, int len){
switch(len & 7) {
default:
while (len > 7) {
len -= 8;
*dst++ = *src++;
case 7:*dst++ = *src++;
case 6:*dst++ = *src++;
case 5:*dst++ = *src++;
case 4:*dst++ = *src++;
case 3:*dst++ = *src++;
case 2:*dst++ = *src++;
case 1:*dst++ = *src++;
}
}
}
本文通过一段特殊的字符串拷贝代码,展示了如何利用switch语句优化字符串拷贝过程,并探讨了switch语句的本质。

530

被折叠的 条评论
为什么被折叠?



