5 ms·
Actually it is misleading by them( and you ) to assume that in C, an unsigned int can represent values larger than the largest signed int value. In other words
by cautious_int 11y ago
Actually it is misleading by them( and you ) to assume that in C, an unsigned int can represent values larger than the largest signed int value.
In other words, C allows that UINT_MAX == INT_MAX, in which case you will overflow.
If they made that assumption, they should explicitly mention it, but they didn't.
> Update 17 Feb 2008:... ...Now that we've made this change, we know that the program is correct;)
It seems the article is aware of the irony. Another update would be in order.
- deleted 11y ago[deleted]
- dastbe 11y agoSure, and if you expect your software to run on such a platform with any degree of confidence then you're right to consider it. Even better, tell us about a conforming implementation that you've used in product recently that has UINT_MAX == INT_MAX. Also I'm not trying to mislead people into thinking that its a good way to implement this. The confounding bit from the article is they started in Java and ended up in C. If you were indexing with signed ints in C, C++, or any language that has unsigned integers then you already have a bug with or without the bad mean check.
- cautious_int 11y agoYou got it backwards there. Only if you know your implementation and plan to code only for it, can you even start to consider bending the C Standard, and not the other way around.