計算したい: (-15 % 3) これは 0 であるはずですが、代わりに 1 を取得しています:
私が明示的に行うとき:
int IntFcn (const void *key, size_t tableSize)
{
printf("%d\n",(*(int*)key)); // prints -15
printf("%d\n",tableSize); // prints 3
printf("%d\n",(-15) % 3); // prints 0
}
正しい結果 (0) が得られますが、以下の変数を使用しようとすると 1 が得られます。
int IntFcn (const void *key, size_t tableSize)
{
printf("%d\n",(*(int*)key)); // prints -15
printf("%d\n",tableSize); // prints 3
printf("%d\n",((*(int*)key) % tableSize)); // prints 1
return ((*(int*)key) % tableSize);
}
なぜこうなった?