【发布时间】:2017-06-26 03:38:37
【问题描述】:
我正在尝试为 unsigned int 分配一个数字,但这会导致错误。 我认为只要数字在 0 到 2^32 之间,它就可以工作。 这是我的代码。
unsigned int number = 4026658824;
但是,我得到了这个错误。
错误:根据 1999 ISO C 标准提升的常量
【问题讨论】:
-
unsigned int在 [0, 2^32-1] 范围内。 -
@YuriyIvaskevych 是的那又怎样?问题与 unsigned int 无关,而是与编译器为整数常量选择的类型的规则有关。更好的编译器警告应该是:“警告:从 long int 到 unsigned int 的隐式转换”。
-
您在哪个编译器中使用了哪些编译选项?看起来他们很挑剔(这很好!)。基本上,在数字末尾加一个 U 就可以了。
-
@YuriyIvaskevych
2^32 = 4.29*10^9。 OP 正在尝试存储比这更小的数字,4.03*10^9。 -
@Lundin - 是的,它甚至比
2^32 - 1还要小,但是 OP 对 32 位无符号整数的范围有一个误解,Yuriy 指出了这一点。只要是评论而不是试图回答问题,这没什么错。
标签: c unsigned-integer