[Bug] rt_vsnprintf格式化long long数值错误
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 72/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- c
- Bereich
- embedded-iot, operating-systems
Rechercherichtung
Beginne in rt_vsnprintf_tiny.c bei rt_vsnprintf und print_number und konzentriere dich darauf, wie die Qualifizierer 'l' und 'L' signierte und vorzeichenlose Werte behandeln. Führe die bereitgestellten INT32- und INT64-Formatierungsfälle aus und vergleiche rt_kprintf mit printf. Erledigt ist die Aufgabe, wenn die gemeldeten long long-Werte mit der erwarteten printf-Ausgabe übereinstimmen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
RT-Thread Version
all
Hardware Type/Architectures
all
Develop Toolchain
Other
Describe the bug
rt_vsnprintf_tiny.c 中rt_vsnprintf函数格式化long long数值错误,主要原因是print_number中将 'l' 与 'L'合并处理了
switch (qualifier)
{
case 'h':
if ((rt_int16_t)num < 0)
{
sign = '-';
num = (rt_uint16_t)-num;
}
break;
case 'L':
case 'l':
if ((long)num < 0)
{
sign = '-';
num = (unsigned long)-num;
}
break;
使用以下代码测出结果不同
rt_kprintf("rt_kprintf: INT32_MIN = %lld\n", (int64_t)INT32_MIN);
printf("printf: INT32_MIN = %lld\n", (int64_t)INT32_MIN);
rt_kprintf("rt_kprintf: UINT32_MAX = %lld\n", (int64_t)UINT32_MAX);
printf("printf: UINT32_MAX = %lld\n", (int64_t)UINT32_MAX);
rt_kprintf("rt_kprintf: INT64_MIN = %lld\n", (int64_t)INT64_MIN);
printf("printf: INT64_MIN = %lld\n", (int64_t)INT64_MIN);
rt_kprintf("rt_kprintf: INT64_MAX = %lld\n", (int64_t)INT64_MAX);
printf("printf: INT64_MAX = %lld\n", (int64_t)INT64_MAX);
测试结果
rt_kprintf: INT32_MIN = -2147483648
printf: INT32_MIN = -2147483648
rt_kprintf: UINT32_MAX = -1
printf: UINT32_MAX = 4294967295
rt_kprintf: INT64_MIN = 9223372036854775808
printf: INT64_MIN = -9223372036854775808
rt_kprintf: INT64_MAX = -1
printf: INT64_MAX = 9223372036854775807
Other additional context
No response
- Vorherrschende Sprache
- C
- Sterne
- 12.3k
- Forks
- 5.5k
- Ø Merge
- 3 T. 8 Std.
- Gemergte PRs (30 T.)
- 27
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus RT-Thread/rt-thread
-
[Bug] [netdev] ping crashes the shell with a division by zero when the target is unreachable (received == 0)Evtl. vergeben @r3wretrhy hat das vor 3 Tagen übernommen. Offenbug Component component: net
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
RT-Thread/rt-thread#11852 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
[bsp][stm32][bluepill] README「快速上手」缺少重新生成 MDK 工程这一步,按文档操作无法编译通过Evtl. vergeben @moment-NEW hat das vor 6 Tagen übernommen. Offenin progress
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
RT-Thread/rt-thread#11818 · 4 Kommentare · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
BSP BSP: Loongson bug RT-Smart
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
RT-Thread/rt-thread#11717 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Arch: RISC-V BSP BSP: HPMicro bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
RT-Thread/rt-thread#11687 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
RT-Thread/rt-thread#11472 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in RT-Thread/rt-thread
Ähnliche Issues
-
Policy query leaks host primary block (BSL_PrimaryBlock_deinit skipped) on two early-exit pathsOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
NASA-AMMOS/BSL#355 ·
Maintainer antworten meist innerhalb von 1 Tag
-
#242 leftovers: dated narrative and shas in the social-features test planEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
EchoTools/nevr-runtime#264 ·
Maintainer antworten meist innerhalb von 1 Tag
-
area/docdb kind/bug priority/medium status/awaiting-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
yugabyte/yugabyte-db#34873 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 70/100
Maintainer antworten meist innerhalb von 1 Tag
-
category:port-update
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 2 Tagen