C 警告:语句对散列字符串无效

Hel*_*ock 1 c hash hashtable hashcode

我正在尝试散列一个字符串,我从我的教科书中得到了代码。

这是代码:

int hash(char *str) {
  int i, sum;
  for (sum = 0; i = 0; str[i] != '\0'; i++)
    sum += (int) str[i];
  return sum % MODVAL;
}
Run Code Online (Sandbox Code Playgroud)

给我错误的代码是 str[i] != '\0';

mic*_*del 5

Cfor循环语法由 3 个表达式组成

for (initialization; condition; increment)
Run Code Online (Sandbox Code Playgroud)

在您的代码中,您的for循环声明中有四个表达式。如果您想要多个初始化(例如初始化sumi归零),您可以用逗号分隔它们:

for (sum = 0, i = 0; str[i] != '\0'; i++)
    // ...
Run Code Online (Sandbox Code Playgroud)