打印

淘宝网面试题

[复制链接]
1088|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
秋天落叶|  楼主 | 2012-5-7 19:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
让我写出atol的实现代码,我记得微软的源码,当场写出来了,如下:
long __cdecl atol(
  const char *nptr
  )
{
  int c; /* current char */
  long total; /* current total */
  int sign; /* if '-', then negative, otherwise positive */

  /* skip whitespace */
  while ( isspace((int)(unsigned char)*nptr) )
  ++nptr;

  c = (int)(unsigned char)*nptr++; sign = c; /* save sign indication */
  if (c == '-' || c == '+')
  c = (int)(unsigned char)*nptr++; /* skip sign */

  total = 0;

  while (isdigit(c)) {
  total = 10 * total + (c - '0'); /* accumulate digit */
  c = (int)(unsigned char)*nptr++; /* get next char */
  }

  if (sign == '-')
  return -total;
  else
  return total; /* return result, negated if necessary */
}

接着面试官问我,为什么要在程序中做(int)(unsigned char)*nptr的强转?我没答出来,哪位能说说为什么要强转啊????

相关帖子

沙发
baidudz| | 2012-5-7 19:09 | 只看该作者
必须是int,或是无符号性,因为字符有可能超过256

使用特权

评论回复
板凳
yybj| | 2012-5-7 19:22 | 只看该作者
LZ居然还能记住代码

使用特权

评论回复
地板
xsgy123| | 2012-5-7 20:51 | 只看该作者
选变成一个字节,然后把这个字节用INT表示出来

使用特权

评论回复
5
关小波522| | 2012-5-8 16:52 | 只看该作者
又出了个淘宝网的面试题,如今是面试题满天飞啊。

使用特权

评论回复
6
dfsa| | 2012-5-8 18:27 | 只看该作者
比较基础的面试题

使用特权

评论回复
7
火箭球迷| | 2012-5-8 18:35 | 只看该作者
这种源码LZ居然也能背下来,**力不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:落叶很美

138

主题

3044

帖子

1

粉丝