微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

perl – 为什么不同编程语言的模数不同?

Perl
print 2 % -18;

– >

-16

Tcl

puts [expr {2 % -18}]

– >

-16

但是VBScript

wscript.echo 2 mod -18

– >

2

为什么有区别?

解决方法

wikipedia answer在这里是非常有用的。

一个简短的总结就是可以定义任何整数

a = qn r

其中所有这些字母都是整数,和

0 <= | r | < | n |。 几乎每个编程语言都需要(a / n)* n(a%n)= a。所以模数的定义几乎总是取决于整数除法的定义。整数除以2 / -18 = 0或2 / -18 = -1的整数除法有两种选择。取决于您的语言是真实的,通常会更改%操作符。 这是因为2 =(-1)* -18(-16)和2 = 0 * -18 2。 对于Perl,情况很复杂。 The manual page说:“请注意,当使用整数在范围内时,”%“可以让您直接访问由C编译器实现的运算符,这个运算符对于负操作数没有定义好,但是执行速度更快。如果使用整数在范围内,它可以选择Perl的任一选项(如C)。如果使用整数不在范围内,手册中说“如果$ b为负数,则$ a%$ b为$ a减去不少于$ a的$ b的最小倍数(即,结果将小于或等于等于零)“。

原文地址:https://www.jb51.cc/Perl/173181.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐