#include<stdio.h>
int a,b,c,d;
int main()
{
a=5/-3; /* 被除数是负数,结果为负数*/
printf("a=%d\n",a);
b=-5/-3; /* 被除数是负数,除数是负数,负负得正,结果为正数*/
printf("b=%d\n",b);
c=5%-3; /* 被求余数是负数,结果为负数*/
printf("c=%d\n",c);
d=-5%-3; /* 被求余数是负数,余数也是负数,负负得正,结果为正数*/
printf("d=%d\n",d);
}
/*得出的结果是a=-1,b=1,c=2,d=-2,c和d的答案怎么会这样,不知道是哪里操作错误了*/
请大侠指点迷津下,谢谢了。
我想得出 5%-3,应该怎么样用C语言里面的公式表达呢
c=5%-3;,是不是这一段不适用,我用的是vc++6.0
追答你大概误会我的意思了
我说的C99规定的是强制在对于负数除法时使用"趋零截尾"的方式计算
即5/-3==-1
虽然在此之前绝大多数编译器对此的做法都是趋零截尾的,但是毕竟标准里没有强制要求,还是有些编译器,使用的还是四舍五入的形式方式处理负数除法
vc6是典型的趋零截尾的,满足
2==5-(-1)*(-3)
对负数的取模运算,C99规定:如果第一操作数为负,则得到的模为负;如果第一操作数为正,则得到的模为正。也就是说这是C的规定。真正的答案不用C的话,就用算术来计算是不是5%-3=-2.95,而在C语言当中就是为第一操作数的正整数,也就是2了。我比较关心,要是我用C来计算这样的问题,那么得出的结果和真正的结果不一样了,只不过是C的结果,遇到这样的问题我应该怎么写这段代码,得到真正的结果。麻烦你了。
本回答被提问者采纳a=(-)5/3,这条运行不了吧
哪个地方错了呢,请指点笑傲