Read legge un carattere dallo standard input, ma restituisce un intero. Quindi tu non stai leggendo un intero, ma un carattere (questo è la causa del fraintendimento, anche se avresti dovuto leggere almeno la descrizione). Se il numero immesso è di più cifre, vengono lette le prime due come caratteri e i codici ascii corrispondenti posti in a e b; se il primo numero è di una cifra, comunque viene letto anche l'invio ed entrambe vengono inizializzate.
ReadLine, al contrario, legge una stringa terminata da un inivio, e questa può essere convertita in intero o in decimale.
Mi domando, tuttavia, perchè il programma ti si chiudesse all'inizio e non, invece, dopo l'aggiunta readline. Infatti, o lo hai eseguito da shell - ed in questo caso anche la prima volta sarebbe dovuto andare, visualizzando un risultato sbagliato - oppure lo hai eseguito dall'IDE o dal sistema operativo - ed in questo caso si sarebbe dovuto chiudere anche la seconda volta perchè non l'hai "fermato".
Colgo l'occasione per una domanda. In c#, la conversione con l'operatore parentesi (tipo) equivale al CType di VB.NET? Perchè in questo caso sarebbe meglio usare quello: Convert è piuttosto stupido e, ad esempio, non riesce a convertire in intero la stringa "1.000" (mille).
|