Ok, I've got it. As you said, "The precision specifies the minimum number of characters for type d, i, o, u, x or X"... I was a tricked by the fact x.a1 and y were lying one next to the other in memory and being the width of the arrays not enough to hold the strings, sprintf continued beyond the bouds. So strange stuff was printed until a null terminator was found.
Ok, let's update the bugs chart: -1 PellesC, +1 my brain... #-o
BTW, isn't there a way to directly truncate/zero-pad the hex number with precision specifiers? That is, to specify how many digits to print AT MOST.
Thanks for the help, bye.