title: Problems with negative numbers
body: <p>I Have this "simple" code.</p>
  
  <pre><code>union
  {
      unsigned int res;
      char         bytes[2];
  } ADC;
  
  char ADC_num[5];
  float temprature;
  
  void vis_temp (void)        //  Show temp..
  { 
      signed int l, length;
      unsigned int rem;
  
      GO_nDONE=1;             // initiate conversion on the channel 0   
  
      while (GO_nDONE) continue;
  
      ADC.bytes[0]=ADRESL;
      ADC.bytes[1]=ADRESH;
  
      utoa(ADC_num, ADC.res, 10);
  
      temprature = (float) ADC.res * 478.1 / 1024;
      temprature = temprature - 50.0;
  
      l = (signed int) temprature;
      temprature -= (float) l;  
      rem = (unsigned int)(temprature* 1e1);
  
      sprintf(&amp;ADC_num, "%i.%u", l, rem);
  </code></pre>
  
  <p>When reading <code>ADC_res</code> (voltage on pin, temperature sensor) that temperature is 0 degree or under then program writes "0.65500" instead of "-3.5" or similar.
  I should have declared the right as signed and unsigned int.
  Any hints to fix it, or have an other way of converting it.</p>