Perchè il puntatore stampa quei numeri?

di il
4 risposte

Perchè il puntatore stampa quei numeri?

Ciao! Sto studiando i puntatori e volevo sapere perché il programma in fondo stampa:
97
-68
0
0
0
0
0
80

Se poteste spiegarmi perché proprio quei numeri, come li trovo?
int main() {
    long int a=12345678;
    char* pa=(char*)&a;
    for (int i=1;i<=sizeof(a);i++){
        printf("%d\n",pa[i]);
    }
    return 0;
}

4 Risposte

  • Re: Perchè il puntatore stampa quei numeri?

    Non vuol dire nulla: sei tu che hai sbagliato a leggere di una posizione, perché sei partito da 1.

    Prova a correggere, poi prova a scrivere 12345678 sulla calcolatrice in modalità "programmatore", compara il valore che trovi in esadecimale e prova a dire tu quello che sta succedendo
  • Re: Perchè il puntatore stampa quei numeri?

    No in realtà non c'è nessun errore. Questo è il programma e quello è il risultato che viene stampato a schermo. Non ho detto che ci fosse un errore ma ho chiesto perché pa assume quei valori.

    Weierstrass ha scritto:


    Non vuol dire nulla: sei tu che hai sbagliato a leggere di una posizione, perché sei partito da 1.

    Prova a correggere, poi prova a scrivere 12345678 sulla calcolatrice in modalità "programmatore", compara il valore che trovi in esadecimale e prova a dire tu quello che sta succedendo
  • Re: Perchè il puntatore stampa quei numeri?

    Usa i tag CODE altrimenti parte il corsivo.

    Perché il for è sbagliato di una posizione: ti perdi il primo byte di a e dopo vai a leggere un byte a caso (il primo che sta fisicamente appena dopo a). Aggiusta il for e gli altri valori te li puoi spiegare da solo, dato che te l'hanno già spiegato in passato
  • Re: Perchè il puntatore stampa quei numeri?

    Ne abbiamo già parlato in

    https://www.iprogrammatori.it/forum-programmazione/cplusplus/come-agisce-cast-sul-puntatore-t43416.html#p8652357
Devi accedere o registrarti per scrivere nel forum
4 risposte