【发布时间】:2012-12-26 11:17:36
【问题描述】:
我想计算: (-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);
}
为什么会这样?
【问题讨论】:
-
你能告诉我们你是如何调用所有这些函数的吗?
-
不要将 size_t 参数打印为“%d”。转换为 (unsigned int) 并使用“%u”规范,或使用“%zu”规范。注意:printf() 是一个可变参数函数,所以你应该非常小心参数的类型。