Chinaunix首页 | 论坛 | 博客
  • 博客访问: 94482
  • 博文数量: 41
  • 博客积分: 991
  • 博客等级: 准尉
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-11 19:59
文章分类

全部博文(41)

文章存档

2012年(18)

2011年(23)

分类: C/C++

2011-12-09 22:06:25


atoi 函数

   1. 代码可移植性
   2. 逻辑右移,算数右移
   3. 避免溢出
   4. 提高性能 (如:移位和加法运算的组合代替乘法)
      

  1. #define MAX_INT (~0U>>1)      

  2. int my_atoi(const char *str) {
  3.     int num=0;
  4.     int negative=0;
  5.     if(*str == '-' || *str == '+') {
  6.         if(*str == '-')
  7.             negative=1;
  8.         str++;
  9.     }
  10.     while(*str <= '9' && *str>='0') {
  11.         
  12.         num=((num<<3)+num+num)+(int)(*str-'0');
  13.         str++;
  14.     }
  15.     if(num >MAX_INT)
  16.         return MAX_INT;
  17.     if(negative)
  18.         num=~num+1;
  19.     return num;
  20. }
阅读(1700) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~