int multiplicationMethod(int k, int n)
{
if(n > SIZE || n < SIZE)
{
printf("IndexOutOfBounds Error. Please Try different slot number.");
}
else
{
int N = rand();
float A = N/RAND_MAX;
int hashedValue = n * ((int)((k * A%1)));
HashTable[hashedValue] = k;
return hashedValue;
}
}
int hashedValue = n * ((int)((k * A%1)));
被标记为指针错误 expression must have an integral type
我不明白这一点,因为 *
与后 NOT 前缀操作一起使用。请帮忙。谢谢!
k * A%1
你不能那样做。 A是浮点数;和 % 只接受整数参数。
这对C来说是一个尴尬。这样的限制已经没有任何好处了。当您看到该接线员时,只需自动呼叫
fmod
。
应该阅读
k * fmod(A, 1)
正如评论中所指出的,您需要将
float A = N/RAND_MAX;
更改为 float A = N/(float)RAND_MAX;
才能使代码正常工作。