Hallo Nerb,
ich bin mir nicht zu 100% sicher, aber ein int-Wert ist meines Wissens nach der einzige Datentyp, der auf jedem System immer genau 16 Bit hat.

Bei char weiss ich definitiv, dass da auch schon mal 16 Bit Speicherplatz verbrauchen werden, aber trotzdem nur 8 nutzbare Bits zur Datenhaltung im Programm vorhanden sind. (Natürlich nicht auf dem Asuro. Das hatte ich mal auf einer dicken IBM-Kiste gefunden).

Den Hinweis von johns zum sizeof() hatte ich vor längerer Zeit schon mal auch für den Asuro umgesetzt.
Die Datentypen werden nach Tastendruck an eine Terminalemulation zum PC gesendet. Ist nichts wildes, aber eventuell mal interressant.
Code:
/*****************************************************************************

   Dateiname:  test.c
   Projekt:    Ausgabe der Bytelaengen aller Variablentypen.

   Funktionen
   ----------
   main()
      Hauptschleife. Bedienung/Auswahl der Funktionen
         Taste N: Nach dem Loslassen irgendeiner gedrueckten Taste wird die
                  benutzte Byteanzahl aller Datentypen ueber IR ausgegeben.

   Version  Datum       Autor / Kommentar
   -------  ----------  ------------------------------------------------------
   V001     14.06.2006  Sternthaler
                        Startversion

   Copyright (c) 2006 Sternthaler
*****************************************************************************/

#include <stdio.h>
#include <string.h>
#include "asuro.h"

/*
   Lokale Funktionsdeklarationen
*/

/*
   Sourceglobale Variablen
*/

/*
   Lokale defines
*/


/*****************************************************************************
*/
                  int   main (void)
{
                  char     v_char;
         unsigned char     v_u_char;
                  short    v_short;
         unsigned short    v_u_short;
                  int      v_int;
         unsigned int      v_u_int;
                  long     v_long;
         unsigned long     v_u_long;
                  float    v_float;
                  double   v_double;
                  int8_t   v_int8;
                  uint8_t  v_uint8;
                  int16_t  v_int16;
                  uint16_t v_uint16;
                  int32_t  v_int32;
                  uint32_t v_uint32;
                  int64_t  v_int64;
                  uint64_t v_uint64;

         unsigned char     sw;
                  char     text [100];

   Init ();

   while (1)
   {
      sw = PollSwitch ();
      while (PollSwitch ())
         ;

      if (sw)
      {
         strcpy (text, "Speichergroessen der verschiedenen Datentypen in Byte\n\r");
         SerWrite ((unsigned char *)text, strlen (text));

         strcpy (text, "\n\r--> Integer (Ganzzahl)\n\r");
         SerWrite ((unsigned char *)text, strlen (text));

         sprintf (text, "         char     : %d\n\r", sizeof (v_char));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "unsigned char     : %d\n\r", sizeof (v_u_char));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         int      : %d\n\r", sizeof (v_int));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "unsigned int      : %d\n\r", sizeof (v_u_int));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         short    : %d\n\r", sizeof (v_short));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "unsigned short    : %d\n\r", sizeof (v_u_short));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         long     : %d\n\r", sizeof (v_long));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "unsigned long     : %d\n\r", sizeof (v_u_long));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         int8_t   : %d\n\r", sizeof (v_int8));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         uint8_t  : %d\n\r", sizeof (v_uint8));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         int16_t  : %d\n\r", sizeof (v_int16));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         uint16_t : %d\n\r", sizeof (v_uint16));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         int32_t  : %d\n\r", sizeof (v_int32));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         uint32_t : %d\n\r", sizeof (v_uint32));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         int64_t  : %d (nur ohne compiler option -mint8)\n\r", sizeof (v_int64));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         uint64_t : %d (nur ohne compiler option -mint8)\n\r", sizeof (v_uint64));
         SerWrite ((unsigned char *)text, strlen (text));

         strcpy (text, "\n\r--> Floating (Flieskomma)\n\r");
         SerWrite ((unsigned char *)text, strlen (text));

         sprintf (text, "         float    : %d\n\r", sizeof (v_float));
         SerWrite ((unsigned char *)text, strlen (text));
         sprintf (text, "         double   : %d\n\r", sizeof (v_double));
         SerWrite ((unsigned char *)text, strlen (text));
      }
   }
   return 0;
}
Gruß Sternthaler