Author: Miguel A. Ballicora
Date: 10:07:02 02/05/02
Go up one level in this thread
On February 05, 2002 at 12:55:35, Uri Blass wrote: >On February 05, 2002 at 12:10:21, Tom Likens wrote: > >>On February 05, 2002 at 08:32:35, Antonio Senatore wrote: >> >>>Hi friends: >>> >>>I have one array A[n] and another B[n] (both of the same dimension) and I want >>>to make A = B without using a loop like >>> >>>for (i=0; i < n; i++) A[i] = B[i]; >>> >>>My question is if is it possible to do that without using none kind of loops >>>(and as I am working in C, I can't work with vectors or to use the lib >>>"algorithm") >>> >>>Thanks in advance >>> >>>Antonio >> >>Here ya go, here's a "simple" way to copy an array :) >>Note, from and to are what they imply and count holds the number of >>items to copy. >> >> register int n=(count+7)/8; >> >> switch(count & 7){ >> case 0: do { *to++ = *from++; >> case 7: *to++ = *from++; >> case 6: *to++ = *from++; >> case 5: *to++ = *from++; >> case 4: *to++ = *from++; >> case 3: *to++ = *from++; >> case 2: *to++ = *from++; >> case 1: *to++ = *from++; >> } while(--n > 0); >> } >> >>This was invented by Tom Duff a number of years back when he was at >>Lucas Films. By the way, just to head off the question before it's >>asked, - Yep this is *legal* ANSI C. > >Is there an advantage relative to the simple way of >for (i=0; i < n; i++) A[i] = B[i]; >or using memcpy? > >The only reason that I can imagine using that way is if it is faster but I guess >that an intelligent compiler already translates everything to the same assembler >program. > >Uri No advantage at all, some C programmers love to push the language to the limit and have fun with it. In fact, it is good to take a look to those examples because you always learn some details of the language and understand how it works. That's all. Regarding good practices, the example is horrible as most of these cases are, but very very clever. It is some kind of art... Regards, Miguel
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.