10
- целочисленная константа типа int
. Если вы выполняете арифметические c операции со значениями разных типов, значение с типом меньшего представления повышается до типа значения с большим представлением.
Примечание: приведение также означает преобразование поэтому, если вы явно приведете одно из значений операнда, правило продвижения по-прежнему применяется.
Например, (unsigned short) 10 + (unsigned short) 10
по-прежнему получает значение типа int
.
Итак, в:
10 - spaceFilled;
spaceFilled
повышается до int
перед вычитанием.
Значение результата int
присваивается spaceEmpty
типа unsigned short
. Здесь происходит преобразование из int
в unsigned short
.
Это то, о чем предупреждают вас предупреждения, поскольку значение результата в spaceEmpty
может отличаться от ожидаемого из-за преобразования.