my_atoi 官方简洁,我的详解

int my_atoi(char* p){
    bool neg_flag = false;// 符号标记
    int res = 0;// 结果
    if(p[0] == '+' || p[0] == '-')
        neg_flag = (*p++ != '+');
    while(isdigit(*p)) res = res*10 + (*p++ - '0');
    return neg_flag ?0 -res : res;
}

int my_atoi1(char* p){
    bool neg_flag = false;// 符号标记
    int res = 0;// 结果

    if(p[0] == '+' || p[0] == '-')
    {
        if(*p == '+')
        {
            neg_flag = false;
        }else{
            neg_flag = true;
        }
        p++;
    }

    while (isdigit(*p))
    {
        res = res*10;//个位
        res = res + *p - '0';//字符数字减'0'就可以得到一个数字
        p++;
    }
    if(neg_flag == true)
    {
        return 0 -res;
    }
    return res;
}

int _tmain(int argc, _TCHAR* argv[])
{
    char *a = "-3431";
    int b = my_atoi1(a);
    printf("%d",b);
    getchar();
    return 0;
}

 

posted @ 2013-09-29 01:15  宝贝,我永远都在  阅读(223)  评论(0)    收藏  举报