Conversione strana da int ad unsigned, conversione intero a stringa e strano errore di segmentazione

di il
7 risposte

Conversione strana da int ad unsigned, conversione intero a stringa e strano errore di segmentazione

Salva e tutti! Sviluppando un piccolo programmino mi sono reso conto che quando converto un int in un unsigned il tutto scoppia, infatti quando do valore maggiori di 10 inizia a restituire valore strani. Per esempio scrivendo

...
int variabile=42;
...
printf("%d %x", variabile,  (unsigned)variabile);
...
stampa
42 2a
Qualcuno saprebbe darmi delucidazioni in merito?

Inoltre mi interesserebbe sapere come convertire un intero in una stringa, se magari esiste qualche funzione che fa ciò. Per esempio:

...
int n=354;
char s[4];
...
s=convert(n);
printf("%s",s);
...
e stampa
"354"
Qualcuno sa aiutarmi in questo?

EDIT:

Ultimo quesito a cui non riesco a trovare risposta. In sostanza ho fatto un metodo dove alla fine mi ritrovo un array dove ci sono tutti i valori che mi interessano, e vorrei mettere questi valori all'interno di un tipo che ho definito io che prende 4 unsigned int. il codice è questo:

...
obstacle_t * ostacolo;
int obs[4]
...
ostacolo->s_i=(unsigned)obs[3];
 ostacolo->s_j=(unsigned)obs[2];
 ostacolo->d_i=(unsigned)obs[1];
 ostacolo->d_j=(unsigned)obs[0]; 
...
Però per determinati valori di "obs" mi lancia un errore di segmentazione che non mi riesco a spiegare (se tolgo la parte dell'assegnamento al mio tipo dei valori fila tutto liscio). RIngrazio infinitamente chiunque voglia aiutarmi!

7 Risposte

Devi accedere o registrarti per scrivere nel forum
7 risposte