use*_*180 2 c limits
我想检查用户输入的数字是否大于或低于告知值.
我知道环礁功能,但它似乎没有特别的帮助,基于未定义的值检查看起来并不太令人信服.
我也知道我可以检查用户输入的字符串是否都是数字,在这种情况下,我可以检查字符串的长度是否大于LLONG_MAX或者LLONG_MIN删除左边的0s,或者如果两者的长度相同,我可以逐位检查,如果该数字中输入的数字的值大于LLONG_MAX或者LLONG_MIN它将超出范围.
LLONG_MAX
LLONG_MIN
但我想必须有更好的方法来做到这一点.希望你能给我一些关于这种方式的提示.
dbu*_*ush 5
请改用此strtoll功能.
strtoll
在情况下,输入的值超出范围,errno被设定为ERANGE与任一LLONG_MIN或LLONG_MAX返回,这取决于是否值下溢或溢出.
errno
ERANGE
从手册页:
该 strtol()函数返回转换结果,除非该值会下溢或溢出.如果发生下溢,则 strtol() 返回 LONG_MIN.如果发生溢出,则strtol() 返回LONG_MAX.在这两种情况下,errno都设置为ERANGE.恰好相同 strtoll() (用 LLONG_MIN 和 LLONG_MAX 代替 LONG_MIN 和 LONG_MAX).
strtol()
LONG_MIN
LONG_MAX
strtoll()
归档时间:
9 年,4 月 前
查看次数:
61 次
最近记录: