Возможный дубликат:
Как работает устройство Даффа?
Я пытаюсь понять, как это работает. Любая помощь будет оценена.
#include<stdio.h>
void duff(int count)
{
int n=(count+7)/8;
printf("n=%d count =%d\n",n,count%8);
switch(count%8){
case 0: do{ printf("case 0\n");
case 7: printf("case 7\n");
case 6: printf("case 6\n");
case 5: printf("case 5\n");
case 4: printf("case 4\n");
case 3: printf("case 3\n");
case 2: printf("case 2\n");
case 1: printf("case 1\n");
}while( --n >0);
}
}
main(){
int count;
scanf("%d",&count);
duff(count);
}
В основном, если switch case оценивается как оператор case 2, то состояние do для while никогда не выполняется. Но я запустил эту программу, и она дала мне результат, но не смог объяснить:
output:
3
n = 1 count = 3
case 3
case 2
case 1