itoa()问题,在TC环境里我输入的要转化的数字大于32767就转化出错。

来源:百度知道 编辑:UC知道 时间:2024/05/25 03:53:24
源码如下:
main()
{
int n=32768;/*或者更大*/
char s[100];
itoa(n,s,10);
printf("%s",s);
}
小于等于32767的都可以正确输出;
把int改成unsigned,long int都不行;
是不是TC环境的问题?还是itoa()函数有限制?
请高手指导,跟我讲的明白些。
我刚用TC试了ltoa(),还是不行,我估计是TC的问题了。

注意看itoa这个函数命名的意思:int to array,即将有符号int类型的数据转换成数组,和你自己定义的变量类型无关,在你用itoa函数的时候,如果第一个参数不是int类型 那么它就会自动强制转换成int类型,所以这里不能用itoa();可以用ltoa(),表示long to array

楼上的说明是对的
itoa()是整型变量转变为字符数组
类似的还有
ltoa (long value, char *string, int radix); 对应long转化为字符数组
而unsigned int对应的是utoa (unsigned int value, char *string, int radix);

同样 unsigned long 对应 ultoa函数

同样还有ftoa是给float类型的

所以要选择使用,用错了当然会出错。

VC 6测试通过 ,可能是TC环境有问题。