我有一个C代码,其中一个do循环在switch语句的第一个分支中启动。有点奇怪的是,switch语句的其余分支都在do循环体内。首先,这段代码如何编译?第二,它可能做什么?
void f(char *x, char *y, int z) {
int z2 = (z + 7) / 8;
switch(z % 8) {
case 0: do { *x++ = *y++;
case 7: *x++ = *y++;
case 6: *x++ = *y++;
case 5: *x++ = *y++;
case 4: *x++ = *y++;
case 3: *x++ = *y++;
case 2: *x++ = *y++;
case 1: *x++ = *y++;
} while(--z2 > 0);
}
}