0

文字列をフロートに変換する必要があります。文字列が数値でない場合は、0 を返します。

atof()次のコードを使用して、関数がこれに対して機能するかどうかをテストしようとしました。

printf("%f", atof("1a"));

atof についての私の理解では、atof が変換できない場合に返される値は 0 ですが、この行は1.0.

なぜこれが起こるのですか?ドキュメントにより、入力が数値でない場合は常に atof が 0 を返すことを意味していることを理解しました。

4

3 に答える 3

1

それでも、この行は 1.0 を出力します。

printf("%f", atof("1a"));

atofこの場合、少なくとも1つの数値を解析できるため、機能1しました。

しかし:

char a[]="a1";
printf("%f\n",atof(a));

期待どおり、戻り値 0.0 が返されたはずです。

于 2016-05-19T17:57:25.860 に答える