Справочная информация: у меня есть ряд скриптов, которые анализируют файлы журналов в поисках шестнадцатеричных чисел, находя ведущий «0x».Наша встроенная библиотека C изменилась на новый printf.Новый printf более совместим со стандартами, чем наши предыдущие, и мои скрипты сломались.
Для Linux:
#include <stdio.h>
int main( void )
{
printf( "%#010x\n", 0 );
printf( "%#010x\n", 1 );
return 0;
}
Вывод (с использованием glibc):
0000000000
0x00000001
Вывод нашей фирменной программы был:
0x00000000
0x00000001
Из printf (3) с символом флага '#': «Для преобразований x и X ненулевой результат имеет строку« 0x »(или« 0X »).«для X-преобразований) к нему».
Мне любопытно почему .Не копаясь в документах по стандартам C или не покупая ланч для членов комитета по стандартам, почему бы не привести 0x к аргументу с нулевым значением?