4

strtoull("-1", NULL, 0)18446744073709551615私がテストしたシステム (Apple Libc を使用する OS/X、Glibc を使用する Linux)では、(0xFFFFFFFFFFFFFFFF別名ULLONG_MAX) と評価されます。

戻り値の型の範囲外の値をチェックすることになっているのに、すべての負の値をstrtoull返さないのはなぜですか?0

編集:周りの動作-ULLONG_MAXも一貫していないようです:

strtoul("-18446744073709551615", NULL, 0) -> 1, errno=0
strtoul("-18446744073709551616", NULL, 0) -> 18446744073709551615, errno=34
4

1 に答える 1