我在哈希表实现中使用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/