C语言的除法与取余运算

  • Post author:
  • Post category:其他

在C语言中,负数除法运算与正数除法运算不一样,遵循原则有:

a/b      分子分母的符号,相同为正,相异为负

a%b     结果取分子(a)的符号,即与被除数(a)符号相同

eg :       -3/16 = 0 ;       16/-3 = -5;

             -3%16 = -3 ;     16%-3 = 1;

在数学公式中,c语言和Python的表示算法都是一样的:
       
r=a-n*[a/n]

以上,r是余数,a是被除数,n是除数。

唯一不同点,就是商向0或负无穷方向取整的选择:

c从c99开始规定向0取整
python则规定向负无穷取整

向零取值的含义是:
9/7=1 .29 —-向0取值–> 1
-9/7=-1.29—-向0取值–> -1

向负无穷取值的含义是:
9/7=1 .2 9—-向0取值–> 1
-9/7=-1.29—-向0取值–> -2

所以套用上述公式为:

C 语言:(a%n的符号与a相同)

            -9%7=-9 – 7*[-1]= -2;

            9%-7=9 – -7*[-1]= 2;

Python :(a%n的符号与n相同)

            -9%7=-9 – 7*[-2]= 5

            9%-7=-9 – -7*[-2]= -5


版权声明:本文为violette416原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。