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_MAX
(0x7FFF
或更大),它的类型为int
。
如果您希望它是无符号的,请在数字的末尾添加u
:0x23FEu
。
以上是关于C中的无符号十六进制常量?的主要内容,如果未能解决你的问题,请参考以下文章