C中的无符号十六进制常量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C中的无符号十六进制常量?相关的知识,希望对你有一定的参考价值。

C是否处理十六进制常量(例如0x23FE)和有符号或无符号的int?

答案

数字本身始终被解释为非负数。十六进制常量没有符号或任何固有的方式来表示负数。常量的类型是第一个可以表示它们的值:

int
unsigned int
long int
unsigned long int
long long int
unsigned long long int
另一答案

它将它们视为int文字(基本上,作为signed int!)。要编写无符号文字,只需在末尾添加u

0x23FEu
另一答案

根据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_MAX0x7FFF或更大),它的类型为int

如果您希望它是无符号的,请在数字的末尾添加u0x23FEu

以上是关于C中的无符号十六进制常量?的主要内容,如果未能解决你的问题,请参考以下文章

C中的无符号字符连接

C ++十六进制字符串到无符号整数[重复]

C中的无符号字符未按预期工作

c中的无符号整数和整数指针[关闭]

C语言里怎样理解长整型 短整型 和无符号型变量和常量?

C中的无符号整数在java中的处理