5

C中有一个函数,atoi(),用PHP实现;

  • $字符串 = '5467'; //函数应该以整数形式返回 5467

所以这就是我发现的 ( its implementation in C)

int myatoi(const char *string) {
    int i;
    i=0;
    while(*string) {
        i = (i<<3) + (i<<1) + (*string - '0');
        string++;
    }
4

3 回答 3

4

除非我误解了这个问题:

function atoi($string)
{
  return (int) $string;
}

看看您是否将 php 的概念理解为一种松散类型的语言,这听起来像是一个棘手的问题。所以,是的,这样问是公平的。

于 2012-11-15T01:40:03.430 回答
3

我不知道 PHP,但如果要看看你是否可以编写算法,我可以展示我如何在 C 中处理这个问题。(此处未经测试的代码。)

int atoi(char *s)
{
    int val = 0;
    while (*s)
    {
        val *= 10;
        val += (*s) - '0';
        s++;
    }
    return val;
}
于 2012-11-15T01:55:09.653 回答
2

真的只是:

function myatoi($s) {
    return (int) $s;
}

我认为他们正在寻找您解决问题的能力,这是一个很好的想法。一位优秀的高级开发人员可能会提出以下有趣的观察结果:

  • 如果数据无效(例如:“a”),我的函数应该返回什么。0? 抛出异常?您的 C 示例将返回一些垃圾(即使对于“15a”,标准规定您应该返回 15)。
  • 您的 C 示例无法处理负数。
  • 如果数字不适合整数,结果应该是什么?您的 C 示例将简单地溢出(顺便说一句,这在 C 中完全有效)。
于 2012-11-15T01:49:55.307 回答