Author: Uri Blass
Date: 16:05:42 05/27/04
Go up one level in this thread
On May 27, 2004 at 18:41:59, Randall Shane wrote: >On May 27, 2004 at 18:10:47, Uri Blass wrote: ><snippage> >> >>I do not get the same move twice when I have >>printf("%s ",move_str(0)); >>printf("%s ",move_str(1)); >> >>I thought that >>printf("%s %s ",move_str(0),move_str(1)); >>should be exactly the same instruction. >> >>I understand now that it is not and the second printf does not print move_str(1) >>immediatly after it calculates it but calculates also move_str(0) and change the >>value of move_str(1) by doing it. >> >>I think that it is a bug in the language or in the compiler because it is clear >>that the programmer mean the same in both cases. >> >> >>correct compiler can solve the problem by translating >> >>printf("%s %s ",move_str(0),move_str(1)); >>to >>printf("%s ",move_str(0)); >>printf("%s ",move_str(1)); >> >>I see no logical reason not to translate it in that way from human point of >>view. > >Ah, but how is the compiler supposed to know that you didn't mean to overwrite >the array, which is defined internal to your move_str routine? Without >extensive and deep analysis of the routines, it can't make that assumption. I think it can make this assumption. I see no reason to write one printf of 2 strings and to mean different thing than the thing that is done by 2 printf. It is a confusing code. The compiler should at least warn me if the meaning of one printf can be different than the meaning of 2 printf in that case. >Even then, how is it supposed to know that you really wanted two separate >strings? Maybe you wanted the behavior you got -- it can't know that. If I want that behaviour then I should use different code and not use code when 2 printf have a different meaning than 1 printf. Uri
This page took 0.01 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.