On Mon, 2001-12-31 at 05:40, Julian Gilbey wrote: > I believe that the author (Knuth) presumably thought "c should only be > between 0 and 127, probably not even that far, and we're using c as an > array index, where we've only allocated 256 chars for this array.
Right. Then it should be explicitly declared as an "unsigned char". > As char might be a signed char, c could feasibly be less than 0, Not if you declare it as unsigned explicitly. > and there's a small possibility that char could be some weird wide > character thing, No, the C standard guarantees that a char is exactly a single byte; i.e. sizeof(char) == 1. > so c could feasibly be greater than 255, we'll > perform the checks just check to be on the safe side." Defensive > programming. It can't be larger than 255 (precisely because it is limited to a single byte). The more I think about it, the more it makes sense to always explicitly declare all char variables as signed or unsigned; otherwise, you're just asking for latent bugs.