Нет последовательности между вызовами printf
- ничто в коде не приводит к тому, что какой-либо из них в любом процессе запускается до или после любого другого. Поэтому любой из 4! = Возможно 24 заказа.
(Предполагается, что каждый вывод печатается полностью перед началом другого. Это не гарантируется C или Posix / Unix, но, скорее всего, с короткими текстами, использующими настройки буфера по умолчанию.)
Несмотря на то, что возможны 24 упорядочения фактических вызовов, некоторые сообщения неразличимы, поскольку они печатают один и тот же текст. Есть две пары одинаковых сообщений, поэтому количество различимых результатов составляет 24/2! / 2! = 6.