atoi 函数
1. 代码可移植性
2. 逻辑右移,算数右移
3. 避免溢出
4. 提高性能 (如:移位和加法运算的组合代替乘法)
-
#define MAX_INT (~0U>>1)
-
-
int my_atoi(const char *str) {
-
int num=0;
-
int negative=0;
-
if(*str == '-' || *str == '+') {
-
if(*str == '-')
-
negative=1;
-
str++;
-
}
-
while(*str <= '9' && *str>='0') {
-
-
num=((num<<3)+num+num)+(int)(*str-'0');
-
str++;
-
}
-
if(num >MAX_INT)
-
return MAX_INT;
-
if(negative)
-
num=~num+1;
-
return num;
-
}
阅读(1750) | 评论(0) | 转发(0) |