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