浏览代码

fix stdio print negative number

greatbridf 4 年之前
父节点
当前提交
12a1f4b207
共有 1 个文件被更改,包括 7 次插入1 次删除
  1. 7 1
      src/kernel/stdio.c

+ 7 - 1
src/kernel/stdio.c

@@ -22,7 +22,6 @@ static inline char d_to_c(int32_t n)
         --(y);                    \
         --(y);                    \
     }
     }
 
 
-// TODO: print negative numbers
 size_t
 size_t
 snprint_decimal(
 snprint_decimal(
     char* buf,
     char* buf,
@@ -30,6 +29,13 @@ snprint_decimal(
     int32_t num)
     int32_t num)
 {
 {
     size_t n_write = 0;
     size_t n_write = 0;
+
+    if (num < 0) {
+        do_write_if_free(buf, buf_size, '-');
+        ++n_write;
+        num *= (-1);
+    }
+
     char* orig_buf = buf;
     char* orig_buf = buf;
 
 
     do {
     do {