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 -