Meditando sul Quiz 13 di Adrian

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

Print
Comments have been closed on this topic.
«dicembre»
domlunmarmergiovensab
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234