Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: By the way, here is an instance where crafty's node counts truncate

Author: Andreas Stabel

Date: 02:00:04 09/23/99

Go up one level in this thread


On September 22, 1999 at 15:25:16, Robert Hyatt wrote:

>On September 22, 1999 at 14:32:00, David Eppstein wrote:
>
>>On September 22, 1999 at 13:36:11, Robert Hyatt wrote:
>>>There is a problem doing this for me.  64 bit ints are not yet ANSI-standard.
>>>If a compiler supports them, you can use them.  But _if_ you want to print them,
>>>portability becomes an issue.  IE in gcc I can use %lld to print one and it
>>>works just fine.  But that breaks other compilers.  If we can get a group that
>>>can give me a working 'format specification' that works on each compiler that
>>>supports this, I can perhaps #define something and switch the node counter to
>>>a long long/_int64...
>>
>>What's wrong with
>>
>>void printlonglong(FILE f, long long x)
>>{
>>	if (x > 9) printlonglong(f,x/10);
>>     putc(f,x%10 + '0');
>>}
>>
>>?
>
>
>That is fine for printing.  But suppose you want to copy it to a string
>(ie using sprintf()) instead...  it just makes the code very messy since there
>is no agreed-on format specification for 64 bit ints.

This is approx. how I have done it in my program:

#define BITBOARD __int64

char * outdlong(BITBOARD oval)
{
   BITBOARD h1, h2;
   int i, negflag;
   static char obuff[32];

   i = 30; negflag = 0;
   if (oval < 0) { negflag = 1; oval = -oval; }
   for (;;) {
      h1 = oval / 10;
      h2 = oval - (h1*10);
      obuff[i] = (char)(h2+ '0'); --i;
      if (h1 == 0) break;
      oval = h1;
   }
   obuff[31] = 0;
   if (negflag) obuff[i] = '-'; else ++i;
   return(&obuff[i]);
}

char outbuf[...]

sprintf(outbuff,"something %s something ...",,,,outdlong(myvar),,,);

Of course in this implementation you should be careful not to use the
outdlong routine twice without copying the output string since the static
variable obuff will be overwritten.

Regards
Andreas Stabel



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.