Согласно cppreference , тип шестнадцатеричного литерала является первым типом в следующем списке, в который может помещаться значение.
int
unsigned int
long int
unsigned long int
long long int(since C99)
unsigned long long int(since C99)
Таким образом, это зависит от того, насколько большойномер есть.Если ваш номер меньше INT_MAX
, то он имеет тип int
.Если ваше число больше INT_MAX
, но меньше UINT_MAX
, оно относится к типу unsigned int
и т. Д.
Поскольку 0x23FE
меньше INT_MAX
(то есть 0x7FFF
или больше), он имеет тип int
.
Если вы хотите, чтобы он был без знака, добавьте u
в конце числа: 0x23FEu
.