我在一本面试准备书--面试算法中看到了这一点。它没有说答案是什么。
据我所知,它确实返回false。我是不是漏掉了什么?
发布于 2011-07-13 14:50:39
Javascript出现在我的脑海中,它有一个特殊的数值Infinity
。
因此,这实际上将返回true:
var x = Infinity;
alert(x == x + 1);
发布于 2011-07-13 15:02:16
对于整数,对于所有x都是x != x + 1
。对于浮点数,不能保证它是真的;如果指数足够大,1将变得无关紧要,并在尾数末尾消失-这是最容易看到的情况,因为它是最大的可能指数,这使得值是无穷的。无穷大加一等于无穷大。但它也适用于较小的指数。
然后,在支持操作符重载的语言中,很可能会违反这样微不足道的数学定律。例如,在Python中,
>>> 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)。
发布于 2011-07-13 14:44:05
它应该:)
这也适用于
x = Int32.MaxValue;
result = x == x + 1;
https://stackoverflow.com/questions/6675004
复制相似问题