2016-11-01 2 views
0

私はatoiを再作成しようとしています。なぜ私の機能が動作するのか不思議です。私は3つの声明のためにそれをstr [i]に変えてしまった。なぜなら、それは私には意味があったからだ。なぜ私の文字列はこのように読み込まれていますか?

i = 0; 
result = 0; 
negative = 1; 
if (str[0] == '-') 
{ 
    negative = -1; 
    i++; 
} 
if (str[0] == '+') 
    i++; 
while (str[0] <= ' ') 
    i++; 
while (str[i] != '\0') 
    if (str[i] >= '0' && str[i] <= '9') 
    { 
     result = result * 10 + str[i] - '0'; 
     ++i; 
    } 
return (result * negative); 
+0

最終的なwhileループでは、数字ではないものは無視します。それはあなたが意図したことなのか、間違いを起こすべきなのでしょうか? '12A3'は' 123'を返します。 –

答えて

0

最初のif文では、数値が負であるかどうかが確認されます。 2番目のifステートメントは、文字列がオプションの正符号で始まるかどうかを確認します asciiの文字がスペースのASCII文字より小さい場合は、最初のwhileループを無限に実行します(32) 2番目のwhileループは、文字列をintに変換して文字列をintに変換します

最初の3 str [0]をstr [i]に変更すると、iが0に初期化されているので大きな違いはありません。 - + "は有効な整数ではないか、記号と数字の間にスペースがあります

関連する問題