Java 不同语言中模算子的差异
根据编程语言的不同,模运算符的答案似乎有所不同。例如,Java 不同语言中模算子的差异,java,python,c++,c,modulo,Java,Python,C++,C,Modulo,根据编程语言的不同,模运算符的答案似乎有所不同。例如,c++、c和Java对于类似-5%2的表达式都返回-1,而python3.x对于相同的计算输出1。为什么会这样 编辑:错误地写了-10%2而不是-5%2。mod的行为因您使用的语言以及您在该语言中使用的mod的哪个实现而不同 以下行为列表: 在您的例子中,python中%的结果采用除数的符号 >>> 11%-2 -1 >>> -11%2 1 但是math.fmod正好相反 >>> imp
c++
、c
和Java
对于类似-5%2
的表达式都返回-1,而python3.x
对于相同的计算输出1。为什么会这样
编辑:错误地写了-10%2而不是-5%2。mod的行为因您使用的语言以及您在该语言中使用的mod的哪个实现而不同 以下行为列表: 在您的例子中,python中
%
的结果采用除数的符号
>>> 11%-2
-1
>>> -11%2
1
但是math.fmod
正好相反
>>> import math
>>> math.fmod(11,-2)
1.0
>>> math.fmod(-11,2)
-1.0
Java正好相反
%
使用被除数,fmod使用除数。在这个问题中,c和c++9使用printf(“%d”),Java使用sout(),python使用print()呃,在所有语言中都应该是0把问题放在一边:在Python中,结果的签名取决于第二个操作数的签名。Java中没有模运算符。它是一个余数运算符。仅此一点就足以回答您的问题。“为什么会这样?”因为Python的设计者决定不遵循C语言的先例,而Java的设计者决定遵循先例(实际上是在Java的许多特性上)。
>>> 11%-2
-1
>>> -11%2
1