Вот подробное объяснение, которое, как я считаю, является сутью устройства Даффа:
Дело в том, что C - это в основном приятный фасад для языка ассемблера (сборка PDP-7 для конкретных , если вы изучили это, вы увидите, насколько поразительны сходства). И на языке ассемблера у вас на самом деле нет циклов - у вас есть метки и инструкции условной ветви. Таким образом, цикл является лишь частью общей последовательности команд с меткой и веткой где-то:
instruction
label1: instruction
instruction
instruction
instruction
jump to label1 some condition
и команда переключения несколько разветвляется / прыгает вперед:
evaluate expression into register r
compare r with first case value
branch to first case label if equal
compare r with second case value
branch to second case label if equal
etc....
first_case_label:
instruction
instruction
second_case_label:
instruction
instruction
etc...
В сборке легко мыслимо, как объединить эти две структуры управления, и когда вы думаете об этом таким образом, их комбинация в C больше не кажется такой странной.