gpt4 book ai didi

c - printf 无法在屏幕上正确打印 float/double

转载 作者:太空狗 更新时间:2023-10-29 15:58:32 25 4
gpt4 key购买 nike

最近,我正在使用在 MIPS 上运行的特殊嵌入式操作系统。建筑学。我对此了解不多。当我使用 printf 函数时,看到一些奇怪的东西:

int a = 10;
float b = 3.14;
double c = 3.14;

printf("a is %d\n", a); // I'm sorry I forgot to type the parameters just now
printf("b is %f\n", b); // Error
printf("c is %f\n", c); // Error

输出是:

a is 10
b is 0.000000

a是对的,但是b好像是错的,c连打印都打印不出来。函数 printf 来自 newlib(一个 C 语言库)。请注意, float / double 可以正确计算,正确存储在内存中,但不能正确打印。

我认为操作系统可能有问题。我只是想知道可能是什么原因。有没有人以前遇到过这个问题?

最佳答案

MIPS-EABI 要求 8 字节堆栈对齐,而您的“特殊嵌入式操作系统”在 4 字节边界上对齐堆栈。

应用程序在将 double 作为函数参数传递之前似乎正常运行是此错误的典型症状。

您需要确保操作系统创建的线程具有 8 字节堆栈对齐。

关于c - printf 无法在屏幕上正确打印 float/double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18746570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com