4

Mac OS X (10.8.1、64 ビットおよび 10.6.8、32 ビット) と Ubuntu (10.04、32 ビット) で実行したコードは次のとおりです。

printf("%d\n", atoi("2147483648"));
// returns -2147483648 in Mac OS X 10.8.1 and 10.6.8
// returns 2147483647 in Ubuntu

いくつかのグーグルの後に私が見つけたものは次のとおりです:http://gynvael.coldwind.pl/?id=365

システムによって出力が異なる理由はありますか?

4

1 に答える 1

9

動作は標準で指定されていないため、これは驚くべきことではありません。

変換された値が int によって表現可能な値の範囲外になる場合に何が起こるかについての標準仕様はありません。

この関数は、値が a に収まらない場合にに設定さstrtolれるため、戻り値でより多くの情報を提供します。errnoERANGElong int

于 2012-09-05T15:57:19.267 に答える