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