Yeah it's correct, though I know it does look odd. For example, on my system, PRIx32 is defined in inttypes.h as: 

#define PRIx32     "x"

Basically, it's a preprocessor abstraction to make format strings the same regardless of the build architecture (for example, it removed the need for %llx on 32 and %lx on 64). Glad that C concatenation rules work this way.