printInt(): fix sign issue when outputting 0, use postfix in/decrement

This commit is contained in:
Dennis Luxen 2015-03-30 12:36:39 +02:00
parent 60663b5433
commit f553896e2d

View File

@ -42,31 +42,33 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
template <int length, int precision> static inline char *printInt(char *buffer, int value) template <int length, int precision> static inline char *printInt(char *buffer, int value)
{ {
bool minus = true; bool minus = true;
if (value > 0) if (value >= 0)
{ {
minus = false; minus = false;
value = -value; value = -value;
} }
buffer += length - 1; buffer += length - 1;
for (int i = 0; i < precision; i++) for (int i = 0; i < precision; ++i)
{ {
*buffer = '0' - (value % 10); *buffer = '0' - (value % 10);
value /= 10; value /= 10;
buffer--; --buffer;
} }
*buffer = '.'; *buffer = '.';
buffer--; --buffer;
for (int i = precision + 1; i < length; i++) for (int i = precision + 1; i < length; ++i)
{ {
*buffer = '0' - (value % 10); *buffer = '0' - (value % 10);
value /= 10; value /= 10;
if (value == 0) if (value == 0)
{
break; break;
buffer--; }
--buffer;
} }
if (minus) if (minus)
{ {
buffer--; --buffer;
*buffer = '-'; *buffer = '-';
} }
return buffer; return buffer;