Я, как и Аркадий, предположу, что вы действительно имели в виду форматирование в стиле printf, поскольку вы ссылаетесь на «выходные данные». Я также предполагаю, что вы используете C (как подсказывает тег).
Если вы запустите:
printf("%6d %-6d %0d", num1, num2);
... вы получите ошибки компилятора (или, что еще хуже, ошибки времени выполнения), поскольку вы не предоставили достаточно аргументов для трех форматов.
У меня такое ощущение, что это не то, о чем вы спрашивали. Давайте предположим, что вы на самом деле запускаете:
// (I've added some extra stuff to show how the formatting works.)
printf("'%6d'/'%-6d'/'%0d'", num2, num2, num2);
... вы получите:
' 123'/'123 '/'123'
Обычно, если ширина поля (в данном случае 6) достаточно широка, числа выровнены по правому краю, дополнены пробелами. Если поставить ширину «-» перед шириной поля, они будут выровнены по правому краю и дополнены пробелами.
Тонкость здесь в формате "% 0d". Вы можете подумать, что вы указываете поле нулевой ширины ... и вы ошибаетесь. Первое, что стоит после «%» - это флаг опции, а «0» - это допустимый флаг. Это означает: «Если ширина поля шире, чем содержимое, то слева от нуля». В этом случае вы не указали ширину поля («0» - это флаг, помните?), Поэтому флаг «0» не имеет никакого эффекта: поле будет настолько широким, насколько этого требует содержимое.
Есть еще худшая тонкость, хотя. Если бы вы указали «% -06d», вы бы получили правильное заполнение нулями, верно? Нет Флаг '-' имеет приоритет над флагом '0', в каком бы порядке они ни указывались. Вы получите «123».