最近在写单片机的程序,在keil C51中用到了sprintf函数,
unsigned char tab[10];
unsigned char n=3;
sprintf(tab,"%4d",n);
上述tab 打印出来的话 应该是769;
但是在 VC上编译就是正常的,是3,后来终于知道是keil C51库函数中sprintf 这个函数的参数,就是相对于n这个参数的位置,应该是int型的,我放了一个char型的进去,所以被变大了,(256*n+1);
解决办法就是:
强制类型转换 sprintf(tab,"%4d",(unsigned int)n);以后就正常了。