logoalt Hacker News

rbanffyyesterday at 7:03 PM1 replyview on HN

Passing a negative value to a function that is specifically for converting strings into unsigned numbers is pretty much an error. In the case of functions that return an unsigned number, at least, negative return values can represent errors.

It’s more fun when the result can be signed though. Maybe strcmp with the representation of the LONG_MAX, and if it doesn’t match, call strtol and watch for a LONG_MAX indicating an error.

C is a bit messy. Would be nicer to return a struct with a possible error and the desired value, Golang style.


Replies

thomashabets2yesterday at 9:55 PM

If that's an error then so is passing in a non number.

So catch 22. You can only check for valid numbers if the number is valid?