zoukankan      html  css  js  c++  java
  • atoi函数的实现

    写atoi函数的时候需要注意一下几点

    1. 字符串前的空白

    2. 字符串所表示数值的正负号

    3. 结束条件,遇到非数字或者字符'\0'结束

    4. 考虑溢出,分别与int值所能表示的最大(0x7fffffff)和最小值(0x8000000)进行比较

    5. 考虑异常输入情况下,用全局变量valid来标识,对于"+/-"  "0" "+abc"需要进行区分

     1 #define INT_MAX ((int)0x7FFFFFFF)
     2 #define INT_MIN ((int)0x80000000)
     3 //#define INT_MAX (~(unsigned int)0/2)
     4 
     5 bool valid=true;
     6 
     7 int myatoi(const char * str)
     8 {
     9     bool minus=false;
    10     long long result=0;
    11     valid=false;
    12     if(str==NULL)
    13         return 0;
    14     while(*str==' ')
    15         str++;
    16     if(*str=='-')
    17     {
    18         minus=true;
    19         str++;
    20     }
    21     else if(*str=='+')
    22         str++;
    23     if(*str<'0'||*str>'9')
    24         return 0;
    25 
    26     valid=true;
    27     while(*str>='0' && *str<='9')
    28     {
    29         result=result*10+*str-'0';
    30         if((minus && result>INT_MAX + 1LL) || (!minus && result>INT_MAX))
    31         {
    32             valid=false;
    33             return 0;
    34         }
    35 
    36         str++;
    37     }
    38 
    39     if(minus)
    40         result*=-1;
    41     return (int)result;
    42 }
  • 相关阅读:
    Math 和 Date
    GRID布局
    移动端项目布局类型
    媒体查询 + rem用法
    字符串
    ES5 中常见的数组常用方法
    数组的排序
    毕设制作:前端界面 2020-02-01
    阅读笔记十六——排序算法
    阅读笔记十五——阿里面试题
  • 原文地址:https://www.cnblogs.com/qianye/p/2966874.html
Copyright © 2011-2022 走看看