Da qualche tempo sto seguendo - tempo permemettendo - i Quiz di Adrian.
Il Quiz 13 è interessante... a colpo d'occhio la risposta sembra essere "1". Ma testando ci si rende conto che ben due volte "i == -i". Ma quando mi sono chiesto io? Una piccola modifica al codice per far stampare i valori e ci si accorge che "int.MinValue == -1 int.MinValue"! int.MinValue e -1 int.MinValue sono binariamenti uguali, anche se in realtà si tratta di overflow non gestito... se infatti impostiamo tra le opzioni di compilazioni "Check for ArithmeticOverflow/Underflow" vediamo che la cosa non è più fattibile in quanto a runtime ci verrebbe subito notificato un errore :-p
La cosa carina è poi scoprire ragionandoci su che il MinValue è binariamente uguale al MaxValue e che il ciclo for qui sotto da luogo a un loop infinito! :-p
for(int i = int.MinValue; i <= int.MaxValue; i++){
Console.Write(".");
}
posted @ lunedì 31 maggio 2004 18:58