问一个问题,123
==0123
==0x123
?
问题
第一次看到这个问题的时候,基本上是不假思索地给出了前一个等号成立而后一个不成立的结论。但是答案却是它们都是错的,这三个数各不相等!不信?那就自己试试吧。
如果你真的去尝试了,会发现123还是123,但是0123会等于83,0x123等于291。当然,第一个和最后一个(16进制)我们不会有什么疑问,但是第二个真的令人费解。猜测一下,为什么。
下面公布答案:
1 | 123 = 1*10*10 + 2*10 + 3 = 123 |
看见了吧,原因在于他们属于不同的进制。
可是为什么0123=83 ,被认定为八进制呢?这跟常理不合啊,还有,八进制不是用o么,怎么是零?
解释
实际上,都可以,0和o长得很像,容易被混淆,况且一般也不会有人在写十进制的时候加上前导零,索性就都定义为八进制。
看来,什么事都不能想当然,还是要多学,多实践才行啊。