在C中为unsigned int分配一个大数字
我试图给unsigned int分配一个数字,但它会导致错误。 我想只要数字介于0和2 ^ 32之间,它应该可以工作。 这是我的代码。
unsigned int number = 4026658824;
但是,我收到此错误。
错误:根据1999 ISO C标准不断推广
十进制常量的类型取决于它可以表示的类型,根据6.4.4.1整数常量 :
整数常量的类型是相应列表中可以表示其值的第一个。
(参见链接中的表格,了解C语言如何推导出实际的整数常量类型)。
通常,signed int不能表示值4026658824
。 因此, 4026658824
可能在您的系统上具有long int
或long long int
类型。 如果unsigned int
可以表示4026658824
那么这很好但是你的编译器是谨慎的。
您可以使用u
或U
后缀或将其unsigned int
为unsigned int
。 如果整数常量值较大,则后缀u
可能不起作用。 例如,如果17179869184u
不能用unsigned int
表示,那么它的类型可能是unsigned long int
或unsigned long long int
,你仍然可以得到它的诊断信息。
除了上面的答案,如果你想要一个变量肯定是一定数量的位,使用固定宽度整数类型 。 做嵌入式工作我们必须要小心(CPU可能只有8位或16位)所以几乎总是使用它们来做所有事情。