在C中为unsigned int分配一个大数字

时间:2017-02-08 13:30:19

标签: c unsigned-integer

我正在尝试为unsigned int分配一个数字,但它会导致错误。 我想只要数字介于0和2 ^ 32之间,它应该可以工作。 这是我的代码。

unsigned int number = 4026658824;

但是,我收到了这个错误。

  

错误:根据1999 ISO C标准不断推广

2 个答案:

答案 0 :(得分:5)

十进制常量的类型取决于它可以表示的类型,每6.4.4.1 Integer constants

  

整数常量的类型是相应列表中可以表示其值的第一个。

(请参阅链接中的表格,了解C语言如何推断出实际类型的整数常量)。

通常,signed int不能代表值4026658824。因此,4026658824可能在您的系统上有long intlong long int类型。如果unsigned int可以表示4026658824,那么这很好,但您的编译器是谨慎的。

您可以使用uU后缀或将其投射到unsigned int。如果整数常量值较大,则后缀u可能不起作用。例如,如果17179869184u无法表示unsigned int,则其类型可能为unsigned long intunsigned long long int,您仍可能会对其进行诊断。

答案 1 :(得分:0)

除了上面的答案,如果你想要一个变量肯定是一定数量的位,使用Fixed-width integer types。做嵌入式工作我们必须小心这一点(CPU可能只有8位或16位)所以几乎总是将它们用于所有事情。