switch - case と do - while について質問

下記のコードで処理がどのような順番で行われるのか教えてください。
よろしくお願いします。

int width = 15;
int n = (width + 3) / 4;
switch(width & 0x03) {
case 0: do { *buffer++ = 0
case 3: *buffer++ = 0;
case 2: *buffer++ = 0;
case 1: *buffer++ = 0;
} while(--n > 0);
}