Вывод на индикатор с гашением старших разрядов если они равны нулю

Выведи число 205 или 0, например. :grin:

Попробую вывести число 205:
Шаг 0: c=" "
первая итерация цикла (сотни, d=2)
d не равен 0 → выполняем вторую ветку if-а: выводим “2” и делаем присвоение c=“0”
вторая итерация (десятки, d=0)
d равен 0 → выполняем первую ветку if-а: выводим c, то есть “0”
третья итерация (единицы, d=5)
d не равен 0 → выполняем вторую ветку if-а: выводим “5” и делаем присвоение c=“0” (уже излишнее)
Итого: вывели “2”, “0” и “5”.

Вот с нулем - проблема, соглашусь. Выводится " ", " " и " ". Придется в псевдокод еще проверку на этот особый случай добавить.

И все же, чем не устраивает

 sprintf (buf,"%3d",val); 

???
Хочется переписать С по своему ?

1 лайк

Очень дорого для контроллера.
В AVR для экономии урезали возможность выводить числа с плавающей точкой. А в ARM это “стоит” целых 12 К. При 64 К на все про все лишние 12 К бывает очень жалко. Не говоря о том, что всегда они есть.

itoa() не так дорого стОит, и, наскока я помню, ведущие нули она не выводит