C-Rätsel

Das folgende Programm gibt “kaputtendorf” aus. Warum?


/*
* (c) Sven Anderson sven_at_anderson.de
* Creative Commons by-nc-sa
*/
#include <stdio>
int main(void) {
char x[22] = {'p', 'g', 'z', 'o', 'n', 'l', 'y', 'h', 'm', 'j', 'a',
'b', 'k', 'd', 'r', 'u', 'w', 'f', 'v', 't', 't', 'e'};
char* a;
int n=0;
char b = 'm';
a = (x - 'a');
while(n++&lt;6)
{
printf("%c", b=b[a]);
}
b|='b';
while(n++&lt;13)
{
printf("%c", b=b[a]);
}
printf("\n");
return 0;
}