use*_*925 10 language-agnostic boolean-expression
我在面试准备书 - 面试算法中看到了这一点.它没有说出答案是什么.
根据我的知识,它确实返回错误.我错过了什么吗?
kap*_*apa 12
Javascript浮现在我的脑海中,它有一个特殊的数字值Infinity.
所以这实际上将返回true:
var x = Infinity;
alert(x == x + 1);
Run Code Online (Sandbox Code Playgroud)
x != x + 1对于所有x ,使用整数.对于浮点数,它不能保证是真的; 如果指数足够大,那么1将逐渐消失,并在尾数末尾丢失 - 这是最容易看到的最大可能指数,它使得无穷大.无限加一个是无穷大.但它也适用于较小的指数.
然后,在支持运算符重载的语言中,很有可能打破这些微不足道的数学定律.例如,在Python中,
>>> class X(object):
... def __eq__(self, other):
... return True
... def __add__(self, other):
... return self
...
>>> x = X()
>>> x == x + 1
True
Run Code Online (Sandbox Code Playgroud)
除非在问题中指定了类型(和实现),否则假设它始终为true是不安全的.但是因为已经指定它是一个整数,你可以知道x != x + 1所有的x.整数存储为一系列位,并且增加一个是通过切换的最后一位,然后携带,如果它已经做了1 等等,这将永远不会得到相同的结果(无论有多少位有在整数类型,提供它大于零).
| 归档时间: |
|
| 查看次数: |
1642 次 |
| 最近记录: |