signed char ed interi
Von: adriano meis (doreciakgulp@tin.invalid) [Profil]
Datum: 19.05.2008 18:43
Message-ID: <F6iYj.81026$FR.310268@twister1.libero.it>
Newsgroup: it.comp.lang.c
Datum: 19.05.2008 18:43
Message-ID: <F6iYj.81026$FR.310268@twister1.libero.it>
Newsgroup: it.comp.lang.c
Salve,
ho win 98 ed il dev c++.
Per capire a fondo la differenza fra char ed unsigned char, ho scritto il
programma:
**********************************************************
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <math.h>
/*questo programma inserisce il valore hD100 in un vettore di singoli byte
di tipo
unsigned char. E poi ricombina questi byte, per risalire al valore h di
partenza.
il programma funziona solo se ricaviamo: totale=hD100*/
main()
{
unsigned char r[4];
unsigned int hD100, totale=0,i,n;
n=sizeof(unsigned int);
for (i=0;i<n;i++)
{
r[i]=h%0x100;
h=h/0x100;
}
for (i=0;i<n;i++)
{
totale=totale+((int8_t)r[i])*(256^i);
}
printf("%d \n", totale); getchar(); system("pause");
}
****************************************************
Ora però io non ottengo totaleD100, bensì totale=-4180.
Ora io chiedo: come è possibile che totale venga negativo, dal momento che
il vettore r[4] l'ho dichiarato
appositamente "unsigned char"?
Ho pensato che forse il problema è che, nel secondo ciclo, impiego
(int8_t)r[i], anzichè (unsigned int8_t)r[i].
Con questa modifica ottengo totalea612.
Come faccio per ottenere totaleD100? Dove è che sbaglio?
Grazie,
adriano meis
[ Auf dieses Posting antworten ]
