If compiler shows error when we write float f = 10.8 it will show error because by default 10.8 here is by default double and double is bigger in size than float so we have to write it like float f = 10.8f

.Then why compiler dont show error when we write :
byte b = 32 here also 32 is by default integer and int is bigger in size than byte??

because in double there is both exponent and mantissa, hence it is required for explicitly state the f. However in integer there is no such case so as long as it falls within the range it is fine. Same reason why char c = 32 will also not give any error