title: How does format specifier know how many bytes to print?
body: <p>I have the following program.</p>
  
  <pre><code>#include&lt;stdio.h&gt;
  int main()
  {
      char a='b';
      int b=11299;
      char d[4]="abc";
      printf("value of a is %d\n",a);
      printf("value of b is %c\n",b);
      printf("value of c is %d\n",*d);
      char *c=d;
      c=c+1;
      printf("c is %d\n",*c);
  }
  </code></pre>
  
  <p>I am little confused with %d format specifier. I was thinking that it would print 4 bytes of data. But from the above program (first and last printf) it is evident that it prints only one byte when a char parameter is used. Why does %d print only one byte? How does it know how many bytes to print? </p>