Newsgroup: it.comp.lang.c
Titolo: Aiuto stampa valori di INT

Salve a tutti, mi scuso in anticipo per la domanda stupida che Vi sto
proponendo, perň per imparare penso debba fare cosě.
Ho un problema, ho fatto un programma che stampa la dimensione dei vari tipi
del suddetto linguaggio di programmazione perň quando arrivo a stampare i
numeri che puň assumere un intero questo mi stampa un zero, penso ad alcune
possibili cause, ma non sono sicuro, quindi chiedo a chi č molto piů esperto
di me, di seguito allego il semplice programma.
#include <stdio.h>
#include <math.h>
/* Programma che stampa le dimensioni o il range che possono assumere i tipi
del C */
int pot(int b);
int main(void)
 {
      int car,u_car,s_int,iint;
            car = pow(2,(sizeof(char)*8));
      u_car = pow(2,(sizeof(unsigned char)*8));
  s_int = pow(2,(sizeof(short int)*8));
      iint = pow(2, (sizeof(int)*8));
    printf("*******************************************************\n");
      printf("***        STAMPA IL LE DIMENSIONI DEI TIPI         ***\n");
printf("*******************************************************\n\n\n");
      printf("Un CHAR e' grande ------------------------------ %d
byte\n",sizeof(char));
      printf("Un unsigned CHAR e' grande --------------------- %d
byte\n",sizeof(unsigned char));
      printf("Un signed CHAR e' grande ----------------------- %d
byte\n",sizeof(char));
      printf("Uno short INT  e' grande ----------------------- %d
byte\n",sizeof(short int));
      printf("Un INT e' grande ------------------------------- %d
byte\n",sizeof(int));
      printf("Un long INT e' grande -------------------------- %d
byte\n",sizeof(long int));
      printf("Un FLOAT e' grande ----------------------------- %d
byte\n",sizeof(float));
      printf("Un DOUBLE e' grande ---------------------------- %d
byte\n",sizeof(double));
      printf("Un long DOUBLE e' grande ----------------------- %d
byte\n",sizeof(long double));
      printf("\n                 *******************\n\n");
      printf("Un CHAR e' grande ------------------------------ %d
bit\n",sizeof(char)*8);
      printf("Un unsigned CHAR e' grande --------------------- %d
bit\n",sizeof(unsigned char)*8);
      printf("Un signed CHAR e' grande ----------------------- %d
bit\n",sizeof(char)*8);
      printf("Uno short INT  e' grande ----------------------- %d
bit\n",sizeof(short int)*8);
      printf("Un INT e' grande ------------------------------- %d
bit\n",sizeof(int)*8);
      printf("Un long INT e' grande -------------------------- %d
bit\n",sizeof(long int)*8);
      printf("Un FLOAT e' grande ----------------------------- %d
bit\n",sizeof(float)*8);
      printf("Un DOUBLE e' grande ---------------------------- %d
bit\n",sizeof(double)*8);
      printf("Un long DOUBLE e' grande ----------------------- %d
bit\n",sizeof(long double)*8);
      printf("\n                 *******************\n\n");
      printf("Un CHAR assume valori ------------- da   -%d   a
%d\n",car/2,(car/2)-1);
      printf("Un unsigned CHAR assume valori ---- da     0    a
%d\n",u_car);
      printf("Un short INT assume valori -------- da   -%d   a
%d\n",s_int/2,(s_int/2)-1);
      printf("Un INT assume valori -------------- da   -%d   a
%d\n",iint/2,(iint/2)-1);
    return 0;
   }
Vi ringrazio in anticipo per l'aiuto e scusate la mia gnoranza.

di me, di seguito allego il semplice programma.
Se vuoi la dimensione in byte di un tipo, basta usare l'operatore
sizeof(<nometipo>).
Quello che tu stai stampando quando invece vuoi stampare il numero di byte č
numero di valori che puň assumere una variabile di tipo char, int, e cosě
via.
Credo che il problema sia dovuto al fatto che il numero di valori che puň
assumere una variabile di tipo int sia il numero intero massimo
memorizzabile piů 1 (se ad esempio potesse andare da 0 a 9, conterrebbe 10
valori, ma essendo il valore massimo rappresentabile in questo caso 9, non
puoi memorizzarci il 10 che ti serve), e quindi va in overflow.
Lanugo

 ha scritto nel messaggio
news:bNJq6.60108$Xj7.7...@news.infostrada.it...
