The % Format Specifiers  %c char  single character   %d (%i) int  signed integer    %e (%E) float or double  exponential format   %f float or double  signed decimal   %g (%G) float or double  use %f or %e as required   %o int  unsigned octal value   %p pointer  address stored in pointer    %s array of char  sequence of characters    %u int  unsigned decimal   %x (%X) int unsigned hex value     Internally what matters is the bits arrangement not the statements.   unsigned int ui = 0xffffffff;   printf("%d", ui);       // -1  printf("%u", ui);       // 4294967295  When you say to the 'printf' "%u"  you're saying: "interpret my word as a unsigned bit arrangement",  and in the other side, when you say "%d"  you're saying "interpret my word as a signed bit arrangement".   %u를 쓰면 ui 변수의 bit array를 unsigned int로 해석하고 출력  %d를 쓰면 ui 변수의 bit array를 signed int 처럼 해석하고 출력한다.    int si = 0xffffffff;   printf("%d",...