Почему я могу это сделать:
short a = 5;
Но не это:
void setNum(short a);
setNum(5);
Он выбрасывает:
Возможное преобразование с потерями из int в короткий
Я понимаю, что 5 является целым литералом, и вы должны его бросить. Я также понимаю, что если значение не является константой, то очевидно, что ему нужно выбросить эту ошибку, потому что, возможно, значение достигает предела короткого типа. Но почему, если компилятор знает, что я передаю константу, которую может удерживать короткая (как в задании), она не позволяет ее скомпилировать? Я имею в виду, в чем разница между ними?