"Steve" <ro**@127.0.0.1> wrote...

I don't get it.

In Codewarrior for Mac OS 9.4, numeric_limits<unsigned char>::digits10 ==

2.

Unless I don't understand it properly (most likely!) I thought digits10

was

supposed to represent the number of digits (in base 10) a value of this

type

needs. In that case, shouldn't digits10 be 3 for an unsigned char (i.e.

255

can be represented using 3 base 10 digits?), 5 for a 16-bit unsigned

short,

10 for 32-bit unsigned int, etc.??

Whereas, in Codewarrior they are 2, 4 and 9 respectively.

The C++ spec (14882), section 18.2.1.2 para 9 states that its 'Number of

base 10 digits that can be represented without change'

I don't think I understand the whole sentence then, but mostly the '...

without change' bit.

If std::numeric_limits<unsigned char>::digits10 were 3, it would claim that

all numbers from 0 to 999 could be represented. That's not true. unsigned

char on your system cannot represent values above 255 without slashing the

high-order bits (or, IOW, changing the value).

V