在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 intlong long int类型。 如果unsigned int可以表示4026658824那么这很好但是你的编译器是谨慎的。

您可以使用uU后缀或将其unsigned intunsigned int 。 如果整数常量值较大,则后缀u可能不起作用。 例如,如果17179869184u不能用unsigned int表示,那么它的类型可能是unsigned long intunsigned long long int ,你仍然可以得到它的诊断信息。

除了上面的答案,如果你想要一个变量肯定是一定数量的位,使用固定宽度整数类型 。 做嵌入式工作我们必须要小心(CPU可能只有8位或16位)所以几乎总是使用它们来做所有事情。