LucaMingarelli1990 Inviato 16 Settembre 2010 Segnala Condividi Inviato 16 Settembre 2010 Ciao a tutti... ho questo problema: il seguente codice si compila e funziona come richiesto su Linux mentre sul mio mac il compilatore mi dice che la conversione da char* a int perde precisione. Questo è il codice: #include <iostream> using namespace std; int main( ) {const char *p = "cucu"; cout << "la stringa [" << p << "] è memorizzata all'indirizzo " << (int)p << endl;} Qualcuno di voi mi sa spiegare il motivo e come è possibile ovviare al problema?? Infinite Grazie! P.S. Lo stesso succede se uso reinterpret_cast<int>(p) Link al commento Condividi su altri siti Altre opzioni di condivisione...
MacMomo Inviato 16 Settembre 2010 Segnala Condividi Inviato 16 Settembre 2010 Qualcuno di voi mi sa spiegare il motivo e come è possibile ovviare al problema?? Infinite Grazie! Prementto che non conosco C++, ma la butto lì: magari il processore lavora a 64 bit, quindi usa puntatori da 8 byte, ed essendo un int da 4 byte non riesce a contenere completamente il valore del puntatore. Marco - Gallery MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard Link al commento Condividi su altri siti Altre opzioni di condivisione...
LucaMingarelli1990 Inviato 16 Settembre 2010 Autore Segnala Condividi Inviato 16 Settembre 2010 Prementto che non conosco C++, ma la butto lì:magari il processore lavora a 64 bit, quindi usa puntatori da 8 byte, ed essendo un int da 4 byte non riesce a contenere completamente il valore del puntatore. GRAZIEE!! Genio! Non ci avevo pensato... alla fine basta fare il casting con long int invece che int così da avere un puntatore a 8 byte! Perfect! Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.