Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: One (silly) question about "C"

Author: Ulrich Tuerke

Date: 09:34:24 02/05/02

Go up one level in this thread


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);
>    }
>

Nice -:(

The "do ... while" in the switch statement is really driving me crazy.

Regards, Uli

>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.
>
>enjoy,
>--tom
>
>P.S. Or you could just use "memcpy" ;o



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.