2018/01/22

[c/c++]strtoull()はマイナスでもエラーにならない

ならないんだ・・・。

errno = 0
uint64_t val = strtoull("-1234", NULL, 10);
if (errno == 0) {
    printf(val = %" PRIu64 "\n");
}

val=18446744073709550382


まあ、そう書いてあるから、そうなんだろう。

https://linuxjm.osdn.jp/html/LDP_man-pages/man3/strtoul.3.html


せっかく、文字の先頭に空白文字があっても判断してくれるのに、マイナスを許容するんだったら文字列のチェックを事前にやらんと行かんじゃないか。。。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。