nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

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
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 ]