我在哈希表实现中使用FNV哈希作为哈希算法,但是在此行的问题标题中得到警告:

unsigned hash = 2166136261;

我不明白为什么会这样,因为当我这样做时:
printf("%u\n", UINT_MAX);
printf("2166136261\n");

我得到这个:
4294967295
2166136261

这似乎在我的机器的限制范围内...

为什么我会收到警告,我有什么选择摆脱警告?

最佳答案

unsigned hash = 2166136261u; // note the u.

您需要一个后缀u来表示这是一个无符号数字。没有u后缀,它将是一个带符号的数字。以来
2166136261 > 2³¹ - 1 = INT_MAX,

这个整数文字将是有问题的。

关于c - 无法摆脱 “this decimal constant is unsigned only in ISO C90”警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2347936/

10-11 15:33