http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60194

            Bug ID: 60194
           Summary: -Wformat should also warn when using %d (instead of
                    %u) for unsigned arguments
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: burnus at gcc dot gnu.org

cppcheck has the following warning:

(warning) %d in format string (no. 1) requires 'int' but the argument type is
'unsigned int'

I think it would be useful to have the same warning with -Wformat. [One can
argue whether the warning should be always printed with -Wformat[=1] or only
with -Wformat=2 (+ -Wformat-unsigned).]


And of course also the other way round, e.g. using "%lu" or "%lz" with an
argument which is (signed) "long".


Example:

#include <stdio.h>
#include <limits.h>

void foo(unsigned i) {
  printf("%d\n", i);
}

int main() {
  foo(UINT_MAX);
  return 0;
}

Reply via email to