Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: printing different values for 2 identical numbers

Author: Uri Blass

Date: 08:07:36 09/10/03

Go up one level in this thread


On September 10, 2003 at 11:04:08, Jaime Benito de Valle Ruiz wrote:

>On September 10, 2003 at 09:36:20, Uri Blass wrote:
>
>>On September 10, 2003 at 09:16:04, Tim Foden wrote:
>>
>>>On September 10, 2003 at 08:45:22, Uri Blass wrote:
>>>
>>>>I found that my program printed the numbers 0 and 1 when it did the following
>>>>code without printing mistake or mistake1.
>>>>
>>>>zobpawnkey[hply]=zobpawn;
>>>>if (nodes==663719)
>>>>{
>>>>	if (zobpawnkey[hply]!=zobpawn)
>>>>		printf("mistake");
>>>>	if ((zobpawnkey[hply]&1)!=(zobpawn&1))
>>>>		printf("mistake1");
>>>>	printf(" %d %d              ",(zobpawn&1),(zobpawnkey[hply]&1));
>>>                 ^^ ^^ these expect int, not __int64.
>>>
>>>If using Microsoft's compiler system, you should use %I64d instead.
>>>
>>>Cheers, Tim.
>>
>>I understand that %d does not give me the right value but the fact that it
>>prints different numbers for identical numbers still seems strange to me.
>>
>>Uri
>
>Because it is printing different numbers from ONLY one number (zobpawn&1), i.e.
>from the lower and upper 32 bits of it. None of those numbers displayed by the
>printf("%d %d"...) has anything to do with (zobpawnkey[hply]&1).
>Probably, (zobpawn) and (zobpawnkey[hply]) in this example are the same, and
>both equal to 0x0000000100000000. That's why you don't get errors in the first
>place, and why you get your 0 and 1 on the screen!
>I hope it's clear what I say.
>Regards,
>
>  Jaime

Yes
It is clear

Thanks.

Uri



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.