为什么 C 将乘法运算与指针赋值混淆?

问题描述 投票:0回答:1
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 前缀操作一起使用。请帮忙。谢谢!

c pointers hash
1个回答
0
投票

k * A%1

你不能那样做。 A是浮点数;和 % 只接受整数参数。

这对C来说是一个尴尬。这样的限制已经没有任何好处了。当您看到该接线员时,只需自动呼叫

fmod

应该阅读

k * fmod(A, 1)

正如评论中所指出的,您需要将

float A = N/RAND_MAX;
更改为
float A = N/(float)RAND_MAX;
才能使代码正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.