我实际上是尝试使用atmel std在c语言中打印一个浮点数,而不是打印值,它只是给我“ f”。谁知道为什么会这样吗?
代码:
float dist = 2.0*3.14*0.25*count;
printf("counter : %d\n",count);
printf("dist : %f\n", dist);
所以,计数器实际上是一个不稳定的长整数,在我的硬件上单击按钮后更新,认为它正常工作,它的打印正确,但是dist的打印不正确,它给了我这个:
dist : f
counter : 12
dist : f
counter : 12
dist : f
counter : 12
dist : f
counter : 12
dist : f
counter : 12
dist : f
即使我尝试打印0.25像:
printf("%f\n",0.25);
它给我输出“ f”here 's the compiler output
为了使printf
支持浮点输出,它需要包括相当大量的代码(数千字节),这对于使用printf但不使用它来输出的许多应用程序完全是无用的浮点数字。如果代码输出浮点数,则某些工具链会尝试自动链接为printf
的全功能版本,如果没有输出则为最小的链接,但是某些工具链要求用户手动选择[ C0]使用。
请注意,如果代码空间很重要,请使用类似以下的结构:
printf
并且避免在/* Output a number from 0.000 to 9999.000 */
uint32_t xi = x*1000.0f + 0.5f;
unsigned units = xi/1000;
unsigned frac = xi - (units*1000);
sprintf(out, "%4u.%03u", units, frac);
中使用浮点格式可以避免使用更大的printf
库,而使用的代码空间比该库所消耗的少得多。