首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于整数x,(x == x+ 1)总是返回false吗?

对于整数x,(x == x+ 1)总是返回false吗?
EN

Stack Overflow用户
提问于 2011-07-13 14:39:25
回答 7查看 2.1K关注 0票数 10

我在一本面试准备书--面试算法中看到了这一点。它没有说答案是什么。

据我所知,它确实返回false。我是不是漏掉了什么?

EN

回答 7

Stack Overflow用户

发布于 2011-07-13 14:50:39

Javascript出现在我的脑海中,它有一个特殊的数值Infinity

因此,这实际上将返回true:

代码语言:javascript
运行
复制
var x = Infinity;
alert(x == x + 1);
票数 12
EN

Stack Overflow用户

发布于 2011-07-13 15:02:16

对于整数,对于所有x都是x != x + 1。对于浮点数,不能保证它是真的;如果指数足够大,1将变得无关紧要,并在尾数末尾消失-这是最容易看到的情况,因为它是最大的可能指数,这使得值是无穷的。无穷大加一等于无穷大。但它也适用于较小的指数。

然后,在支持操作符重载的语言中,很可能会违反这样微不足道的数学定律。例如,在Python中,

代码语言:javascript
运行
复制
>>> class X(object):
...    def __eq__(self, other):
...        return True
...    def __add__(self, other):
...        return self
...
>>> x = X()
>>> x == x + 1
True

除非在问题中指定了类型(和实现),否则假设它始终为真是不安全的。但是由于已经指定它是一个整数,所以你可以知道所有x的x != x + 1。整数被存储为一系列的位,通过切换最后一位,然后如果它已经是1等,那么加1是完成的,这永远不会得到相同的结果(无论在整数类型中有多少位,只要它大于0)。

票数 8
EN

Stack Overflow用户

发布于 2011-07-13 14:44:05

它应该:)

这也适用于

代码语言:javascript
运行
复制
x = Int32.MaxValue;
result = x == x + 1;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6675004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档