Perchè il puntatore stampa quei numeri?

di mrzyasha il
4 risposte
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

  • 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
  • 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
  • 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
Devi accedere o registrarti per scrivere nel forum
4 risposte