1. %f,正常,浮点格式化正常, abc = 90.001 sprintf( tmp, "%f", abc);
2. %d, 只对 int16起作用,大宽度的会只存高两字节。
%u, 只对 uint16宽度的数起作用,大宽度的会只存高两字节。
%x, %X 只为16Bit宽度的数起作用,大宽度的会只存高两字节。
可能的原因是 dsp 2x中默认的int为16Bit。还有sprintf参数好像是传的指针或引用,即地址。
不妨用sprintf(tmp, "%.0f", float(abc)),来代替,且没有小数点。
使用sprintf,参数可以直接使用数字;但使用sizeof()作参数时,有时得不到想要的,可能是sizeof()为编译期指令,数据优化了?
千万注意:要#include <stdio.h>,否则,也能编译,但不能出效果。
2011.4.29补充:
由于32Bit在dsp 28x中为long,故对32Bit int使用sprintf(tmp, "%ld", abc).