The format string semantics are actually pretty tricky because printf will perform conversions in certain cases.