Blog del corso di Programmazione (9 CFU) tenuto da Marco La Cascia presso l'Universita' di Palermo per il corso di laurea in Ingegneria Informatica e delle Telecomunicazioni. Tratta la programmazione a oggetti in Java.
Salve professore volevo da lei un chiarimento riguardo all'inizializzazione di una variabile, mi spiego meglio, facendo l'esercizio 1 ho ricreato la classe studente, quando assegno all'oggetto una matricola (che nella classe è un tipo long) del tipo 0576752 mi da problemi perche se stampo le informazioni dello studente la matricola è cambiata(196074). Penso che il problema sia lo 0 iniziale perche se lo levo da il numero corretto, la mia domanda è 'il programma non dovrebbe dare comunque 576752 invece di un altro numero? a cosa è dovuto questo comportamento?'
questa è la mia classe di prova: class Studente{ public: Studente(string="cognome", string="nome", long=0); Studente(const Studente&); ~Studente(); void stampa()const; private: int mat; string nom, cogn; };
Il motivo dello strano comportamento va ricercato in una delle primissime lezioni del corso e in particolare nelle costanti letterali. Se anteponi uno 0 a un numero questo viene interpretato come in base 8 e non in base 10 cosi' come 0X indica che e' un numero esadecimale.
Salve professore volevo da lei un chiarimento riguardo all'inizializzazione di una variabile, mi spiego meglio, facendo l'esercizio 1 ho ricreato la classe studente, quando assegno all'oggetto una matricola (che nella classe è un tipo long) del tipo 0576752 mi da problemi perche se stampo le informazioni dello studente la matricola è cambiata(196074). Penso che il problema sia lo 0 iniziale perche se lo levo da il numero corretto, la mia domanda è 'il programma non dovrebbe dare comunque 576752 invece di un altro numero? a cosa è dovuto questo comportamento?'
RispondiEliminaquesta è la mia classe di prova:
class Studente{
public:
Studente(string="cognome", string="nome", long=0);
Studente(const Studente&);
~Studente();
void stampa()const;
private:
int mat;
string nom, cogn;
};
nel main scrivo:
Studente a("Tarantino","giovanni luca",0576752);
la ringrazio anticipatamente per la risposta!
Il motivo dello strano comportamento va ricercato in una delle primissime lezioni del corso e in particolare nelle costanti letterali. Se anteponi uno 0 a un numero questo viene interpretato come in base 8 e non in base 10 cosi' come 0X indica che e' un numero esadecimale.
RispondiElimina