jan@neuroinformatik.ruhr-uni-bochum.de (Jan Vorbrueggen) writes:
|> I liked the version occam uses: If you don't care (e.g., for loop
|> counters and array indices), you specify INT which uses the native
|> integers, i.e., 16 bits on the 16 bit transputers and 32 bits on the
|> 32 bit transputers. If you want a certain precision regardless of the
|> hardware you're running on, you specify INT16 or INT32 or..., as the
|> case may be. For sizes larger than the native size, the compiler will
|> automatically use the with-carry operations appropriately.

There is currently a proposal before the C standardization committee
to do something like this. It actually goes considerably farther: for
example, most of the time, you need a minimum of n bits, but sometimes
you need exactly n bits (in which case, the compiler must typically
generate masking operations). And when you only need the minimum, you
may want the actual type optimized for either speed or space.

The result is a considerable number of integral types. The
implementation defines which ones map to short, int and long, but you
always have the possibility of specifying all of the gory details.

I'm not familiar with all of the details, but if you drop by and ask a
question in comp.std.c, the proponants of the proposal will give you
all the information you want.