Mail Archives: djgpp/1997/05/01/18:11:45
Chris Croughton wrote:
>
> I think he got that last part the wrong way round.
>
> short <= int <= long
>
> which implies that short can be the same size as long (and if
> so then int is the same size as both). There are also some minima
> - short has to be at least 16 bits and long at least 32 bits.
Ah, that is definitely nice to know (about the minima).
> In fact, don't use any predefined type for external transfers. If
> you mean to write a two-byte integer, use something like:
>
> putc(val/256, fo);
> putc(val%256, fo);
>
> for output and:
>
> int val;
> val = getc(fi) * 256;
> val += getc(fi);
>
> for input (don't try to combine them, because the order of evaluation
> isn't fixed so in getc(fi)*256+getc(fi) either byte might be read first,
> depending on what the compiler thought was best).
Very helpful tips! I also did not know that the compiler had the
freedom to alter the order of function calls when specified in that way.
> >For example, I have a structure that contains the information
> >for a ship in my game. Coordinates, health, fuel, all kinds of
> >things like that. I am trying to determine whether it would
> >be better to use ints or shorts for these sorts of things, as
> >well as others.
>
> If you're short of memory, use short. If you want faster execution, use
> int. But remember the size limitations as well - will your 'fuel'
> quantities fit into 16 bits, or might you at some point want them
> bigger? Even more so with coordinates - 65535 might sound like a
> big number now, but will you want either longer distances or more
> precision in the future?
This sounds like precisely the information I have been in search of.
> (For reference, a lightyear is about 1e16 metres, which is about 53
> bits; a "long long" can therefore represent about 1000 lightyears in
> metres (if signed; 2000 ly if unsigned). How far does your game
> range?)
>
> Chris
Most of my values, such as fuel and coordinates, need not ever be
32 bits. I am doing a tile based game with a tile size of 32x32,
and currently use a 100x100 map. The coordinate system is such
that there are tile coordinates supplemented by pixel offsets
(sub-tile coordinates, you could say). So even if I wanted to
make an insanely large map I would not need 32 bits.
I appreciate the time and effort put into your message. You
have provided me with some most valuable information!
Tom Grandgent
tgrand AT canvaslink DOT com
Canvas Link, Inc.
- Raw text -