extern void abort(void); extern void exit(int); void foo (char *bp, unsigned n) { register char c; register char *ep = bp + n; register char *sp; while (bp < ep) { sp = bp + 3; c = *sp; *sp = *bp; *bp++ = c; sp = bp + 1; c = *sp; *sp = *bp; *bp++ = c; bp += 2; } } int main(void) { int one = 1; if (sizeof(int) != 4 * sizeof(char)) exit(0); foo((char *)&one, sizeof(one)); foo((char *)&one, sizeof(one)); if (one != 1) abort(); exit(0); }