#define INT_MAX ((int)0x7FFFFFFF)
#define INT_MIN ((int)0x80000000)
//#define INT_MAX (~(unsigned int)0/2)
bool valid = true;
int myatoi(const * str)
{
int num = 0;
valid = false;
if(NULL != str )
{
const *digit = str;
bool minus = false;
while(*digit==' ' || *digit == '\t')
digit++;
if(*digit == '+'){
digit++;
}
else(*digit == '-'){
digit++;
minus = true;
}
while(*digit != '\0'){
if(*digit >= '0' && *digit <= '9'){
num=10*num + (*digit - '0');
digit++;
}
else{
num = 0;
break;
}
}
if(*digit == '\0'){
if((minus && num>INT_MAX + 1LL) || (!minus && num>INT_MAX))
return 0;
else{
valid = true;
if(minus)
num *= -1;
return num;
}
}
}
}
1.判空操作
2.空格、符号处理
3.最大整数和最小边界处理
4.全局变量标记数据是否有效