I think the reason for making int literals the ones that don't need a type indication is that int is intended to be the normal integer type. Similarly, double is the normal floating point type. The idea seems to be to limit the number of literals that need a type indication by defaulting to the commonest type.