In Java, il seguente codice non viene compilato:
int val = 1;
short shortVal = val; // Incompatible types
Qualcuno sa perché Java scelga di lamentarsi di questo incarico, invece di limitarsi a troncare, quando un intero intero di tipo integer rischia anche di traboccare?
Per illustrare:
int val = 46340;
int result = val * val; // 2147395600
System.out.println(result);
int overflowVal = 46341;
int result2 = overflowVal * overflowVal; // -2147479015
System.out.println("Quietly overflowed: " + result2);