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