Цитата(x893 @ Jul 20 2017, 17:12)

Ну и стиль программирования конечно надо подтянуть.
ой как надо
2
Jenya7: Сравните время выполнения своей функции и нижеприведённой utoa10() (при полной оптимизации). И подумайте почему такое отличие.
CODE
//Преобразует число x в строку в str с основанием 10.
//Возвращает указатель на завершающий 0-ой символ.
char * itoa10(s32 x, char *str)
{
if (x < 0) {
*str++ = '-';
x = -x;
}
return utoa10(x, str);
}
//Преобразует число x в строку в str с основанием 10.
//Возвращает указатель на завершающий 0-ой символ.
char * utoa10(u32 x, char *str)
{
#define D ((B35 + 5) / 10)
u32 i;
char *s1, *s = str;
do {
x = (i = x) * D >> 35;
*s++ = i - x * 10 + '0';
} while (x);
*(s1 = s) = 0;
while ((uint)--s > (uint)str) {
i = *s;
*s = *str;
*str++ = i;
}
return s1;
#undef D
}
ЗЫ: если кто не понял, то B35 это:
#define B35 (1ULL << 35)ЗЫЫ: кто напишет быстрее (без использования ассемблера)?