码迷,mamicode.com
首页 > 其他好文 > 详细

记一道比较有意思的面试题

时间:2018-07-24 19:22:26      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:回收   对象   内存地址   结束   3.0   面试题   返回结果   图片   变量   

下列等式中输出为False的是(B)

  1. 1+1 is 2   B.  999+1 is 1000    C. 2.0*3.0 ==3.0*2.0    D. type(bool)==type(int)

 

这题表面上看上去好像很迷,很容易会误认为A如果是对的那么B就应该是对的,因为格式类似而且都是整型数字,容易误选D,实际上D返回的都是type对象返回结果为True,那么为啥选B呢,我有印象低于一个值的数字是内存固定创建好的,具体值是多少有点记不得了,所以其指向的内存地址都是一样的,与加法无关,但是1000的话就是系统临时创建的,而且没有变量来保存1000所以当1000那句语句结束即被回收机制回收,999+1虽然也是1000但是这两个1000的地址是不同的,如果是1000 is 1000那么返回结果为True原因我推测应该是后一个1000也是指向的前一个1000的位置,因为两个1000出现在同一条语句所以前一个1000还没被系统回收所以后一个1000其实指向的内存地址也是相同的技术分享图片

记一道比较有意思的面试题

标签:回收   对象   内存地址   结束   3.0   面试题   返回结果   图片   变量   

原文地址:https://www.cnblogs.com/akuma233/p/9361578.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!