CB *_*ley 27
数字本身始终被解释为非负数.十六进制常量没有符号或任何固有的方式来表示负数.常量的类型是第一个可以表示它们的值:
int
unsigned int
long int
unsigned long int
long long int
unsigned long long int
Run Code Online (Sandbox Code Playgroud)
Ara*_*raK 11
它将它们视为int文字(基本上,作为signed int!).要编写一个无符号文字,只需u在末尾添加:
0x23FEu
Run Code Online (Sandbox Code Playgroud)
根据cppreference,十六进制文字的类型是以下列表中可以容纳该值的第一个类型。
int
unsigned int
long int
unsigned long int
long long int(since C99)
unsigned long long int(since C99)
Run Code Online (Sandbox Code Playgroud)
所以这取决于你的数字有多大。如果你的数字小于INT_MAX,那么它就是类型int。如果您的数字大于INT_MAX但小于UINT_MAX,则它的类型为unsigned int,依此类推。
由于0x23FE小于INT_MAX(等于0x7FFF或大于),因此它的类型为int。
如果您希望它是无符号的,请u在数字末尾添加一个:0x23FEu。