在学习itoa()和atoi()函数时遇到一点小问题
首先说下两者的用法:
- char *itoa(int value,char *string,int radix),其中 radix指定整数value的转换进制,可以取值为2、8、10、16,该函数实现的功能是将整数value转换成指定进制的字符串存入string。
- int atoi(char *nptr),该函数实现的功能是将字符串转换成整数;在转换过程中,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(‘\0’)才结束转换,并将结果返回。
程序
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
int number=12345;
int a;
char string[25];
itoa(number,string,10);
cout<<"integer= "<<number<<endl;
cout<<"string= "<<string<<endl;
a=atoi(string);
cout<<"a= "<<a<<endl;
return 0;
}
程序结果
从上面可以看出整数经过itoa()转换,再经过atoi()转换的结果等于自身。
但是使用itoa()将整数转换成二进制形式的字符串后, 再使用atoi()转换成的整数却很奇怪,这是为什么??