12 ms·
That's quite a controversial statement. Using unsigned ints may just clutter code without providing any safety. The value of 4e9 is still invalid, even though i
by Jabbles 14y ago
That's quite a controversial statement. Using unsigned ints may just clutter code without providing any safety. The value of 4e9 is still invalid, even though it's positive. As you say, checking your inputs is important, and in this case values can be too large, and should be rejected.
For instance: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Integer%5FTypes http://google-styleguide.googlecode.com/svn/trunk/cppguide.x...
- raverbashing 14y agoThe issue is 4e9 is invalid but in the middle of the way (more often than not) this may be interpreted as a negative number. Hence you need to check for value 'bigger than allowed' and 'smaller than allowed' For unsigned ints, there is a natural smallest value allowed: zero. You're free to not follow my advice though. And the google style guide is subtle, it's not what you're implying. You can't use 'short' for example unless explicitly.
- nanex 14y agoUsing "unsigned ints" for values that will never be negative allows you to perform one validation test instead of two. Use a typedef to avoid writing "unsigned" everywhere and you end up with less clutter in the code (for humans) and in the binary (for machines). nanex
- ajuc 14y agoYou should check before the operation that can produce result outside the valid range anyway. Wrong example: unsigned int z = x - y; if (z > BIG_NUMBER) { return false; } Good example: if (y > x) { return false; } unsigned int z = x - y;