Сегодня был некоторый сюрприз с некоторым кодом. Я собирал его на AIX, с уровнем предупреждения, установленным на анал, чтобы увидеть, какие проблемы с мошенниками могут скрываться. Что-то новое вышло из кода.Почему «% .3i» печатает ведущие нули?
1540-2837 (W) '0' flag is disregarded when combined with
precision and 'i' printf format.
После просмотра строки оскорбления, я собрал небольшую программу, чтобы воспроизвести ее. Тестирование на нескольких платформах показало, что это не AIX.
Первый тип printf под ним имитирует то, что было найдено в программе.
#include <stdio.h>
int main(void)
{
int x = 3;
printf("Format 0.3i <%0.3i>\n", x); // prints 003, and AIX does a warning
printf("Format .3i <%.3i>\n", x); // prints 003, with no warning
printf("Format 3i <%3i>\n", x); // prints 3, with no warning.
return 0;
}
Обычно, если нужны были ведущие нули, формат «03i» будет делать работу хорошо.
Что здесь означает «% .3i»?
Почему у этого есть поведение, которое оно совершает?
Great Globs of Glue. Я забыл RTFM Daniel Thank You. – EvilTeach
@EvilTeach: проблем нет:] –