Первый передает один параметр, а второй - 2, поэтому вызов в первом случае немного быстрее.
Но в первом printf () должен отсканировать длинную строку для определения форматаа во втором строка форматирования очень короткая, поэтому во втором, вероятно, обработка будет быстрее.
Более важно (во всяком случае, для меня), что "очень длинная строка" маловероятнабыть постоянной строкой, как в этом примере.Если вы печатаете длинную строку, вы, вероятно, используете указатель на то, что сгенерировала программа.В этом случае гораздо лучше использовать вторую форму, потому что в противном случае, где-то, как-то, когда-нибудь, длинная строка будет содержать спецификацию формата printf формата, и это заставит printf искать другой аргумент, и ваша программа потерпит крах.Именно эта проблема возникла у меня около недели назад в коде, который мы использовали в течение почти 20 лет.
Суть в том, что ваша спецификация формата printf всегда должна быть константной строкой.Если вам нужно вывести переменную, используйте printf("%s",var)
или, что еще лучше, fputs(var, stdout)
.