micsom, you're probably using a different compiler, which one is it? Modifying a string constant should throw an error, since it's an operation you shouldn't perform.

XOR-ing something with zero DOESN'T modify it, so mabye the compiler's outsmarting the lot of us. Try this:
Code:
char *str1="Mike";
char *str2=str1;
xtr1[0]^=str[3];
printf("%s\n",str2);