Author: Sune Fischer
Date: 07:46:52 07/04/02
Go up one level in this thread
On July 04, 2002 at 10:27:56, Tim Foden wrote: >On July 04, 2002 at 04:06:26, Sune Fischer wrote: > >>On July 03, 2002 at 21:39:39, Dieter Buerssner wrote: >> >>>On July 03, 2002 at 17:57:37, Sune Fischer wrote: >>> >>> >>>>Then it has to be because of the leading zeros, because usually it _is_ a 64 bit >>>>number. The same trick on the file worked great, but that number is >>>>0x0101010101010101, which is then correctly read as a 64 bit type. >>> >>>Of course, it is because of the leading zeros. Anyway, to have an unsigned long >>>long constant, use 0xffULL in Standard ISO C-99. Unfortunately, this is not yet >>>supported by all major compilers. Also, the other Standard C way - (unsigned >>>long long)0xff is not supported by all compilers. However this later method may >>>be easier to support practicably portbable by some typedef. >> >>Yes, it also "looks" better, but its not supported by msvc++ 6 :( > >In VC++ you can write: (0xFFi64 << (r << 3)) right, i64 works. > or (__int64(0xFF) << (r << 3)) > >More portably you could do something like this somewhere: > typedef __int64 INT64; // for VC++ >or > typedef long long INT64; // for GCC (?) > >... and then write: (INT64(0xFF) << (r << 3)) > or (((INT64)0xFF) << (r << 3)) > >Cheers, Tim. yep that's what I did, and I prefer it for portability reasons :) -S.
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.