5

Cには関数atoi()があり、これをPHPで実装します。

  • $ string = '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 に答える