As @laserlight says: undefined behavior.

Tip: If you are using glibc and want to use only one argument, you can do, for example:
Code:
printf( "%1$d -> 0x%1$02x", 3 );
Will print:
Code:
3 -> 0x03