先抛出问题,你觉得下面的代码会输出什么样的结果?
/* 一个简单的示例代码 */
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = -10;
int b = 10;
int c = -3;
int d = 3;
printf("结果1: %d\n", a%d);
printf("结果2: %d\n", b%c);
printf("结果3: %d\n", a%c);
printf("结果4: %d\n", a/d);
printf("结果5: %d\n", b/c);
printf("结果6: %d\n", a/c);
return 0;
}
int
类型,没有问题。但现象是结果有时对,有时不对。发现在输入负数时结果会出问题,这么一来大概就知道问题出在什么地方了。C 语言中负数做除法的时候,商是令其与分母相乘的积的绝对值不超过分子的绝对值且最接近的那个数。
这个问题在C语言中看似简单,但是往往不注意也可能会引起大问题。如果这个对你有一点点帮助,那么就是值得的。
好文推荐