Office中国论坛/Access中国论坛
标题: 【讨论】有趣的Access VBA数字之迷 [打印本页]
作者: LucasLynn 时间: 2005-8-14 17:38
标题: 【讨论】有趣的Access VBA数字之迷
下面有一个表达式:
((CLng(Not cByte(255)) * 256 + (Not cByte(255))) * 256 + (Not cByte(255))) * 256 + (Not cByte(155))
你可以用任何方法来求一下他的值。我求出来是100
然后你再尝试在这个表达式前面加上“1-”和“1+”,变成:
1-((CLng(Not cByte(255)) * 256 + (Not cByte(255))) * 256 + (Not cByte(255))) * 256 + (Not cByte(155))
1+((CLng(Not cByte(255)) * 256 + (Not cByte(255))) * 256 + (Not cByte(255))) * 256 + (Not cByte(155))
再分别求值。呵呵,你是不是彻底崩溃了?
[此贴子已经被作者于2005-9-21 23:04:35编辑过]
作者: LucasLynn 时间: 2005-8-14 17:43
其实只是个小把戏,嘿嘿。
作者: eyewitnes 时间: 2005-8-14 17:44
不用去试算,,看着就感觉晕
作者: LucasLynn 时间: 2005-8-14 17:58
以下是引用eyewitnes在2005-8-14 9:44:00的发言:
不用去试算,,看着就感觉晕
9494,你看都激起民愤了,赶快做完吧。
[em01]
作者: 海狸先生 时间: 2005-8-14 19:02
本来就是帮你想的,这种东西你在行
作者: eyewitnes 时间: 2005-8-14 19:28
以下是引用LucasLynn在2005-8-14 9:58:00的发言:
9494,你看都激起民愤了,赶快做完吧。
[em01]
呃,不试算了,我猜应该是32768和-32768之类的结果,嘿嘿
作者: LucasLynn 时间: 2005-8-14 19:40
以下是引用eyewitnes在2005-8-14 11:28:00的发言:
呃,不试算了,我猜应该是32768和-32768之类的结果,嘿嘿
完全不是,你用VBA算一下就知道了。我说了是小把戏,就不会这么复杂的嘛。
[em01]
作者: LyxSoft 时间: 2005-8-15 03:13
1+0+100=1011-0+100=101
作者: wu8313 时间: 2005-8-15 04:15
给出的两个表达式的值 均为101
1+(0+0+0+100)=101
1-(0+0+0+100)=101
奇怪的就是: 这两个表达式的值应该不一样。
计算倒是很快,再一奇怪楼主是如何得到上述表达式的?
-----------------------------------------------------------------------------------------------------------------
我是在 立即窗口 中查看结果的:
Sub wu8313()
Dim a, b, c,d
b = Not CByte(255)
c = CLng(Not CByte(255))
d = Not CByte(155)
'LucasLynn 给出的表达式之一
a = 1 + ((CLng(Not CByte(255)) * 256 + (Not CByte(255))) * 256 + (Not CByte(255))) * 256 + (Not CByte(155))
Debug.Print b '值为0
Debug.Print c '值为0
Debug.Print d '值为100
Debug.Print a '值为101 最终结果
End Sub
--------------------------------------------------------------------------------------------------------------
[此贴子已经被作者于2005-8-14 20:42:45编辑过]
作者: LucasLynn 时间: 2005-8-15 17:38
以下是引用LyxSoft在2005-8-14 19:13:00的发言:
1+0+100=101
1-0+100=101
终于有人道破天机了。
[em05]
作者: wu8313 时间: 2005-8-16 01:56
我怎么感觉是这样的:给出的两个表达式的值 均为101 1+(0+0+0+100)=101 '表达式之一1-(0+0+0+100)=101 '表达式之二----------------------------------------------------------------还请赐教!谢谢!
作者: LucasLynn 时间: 2005-8-16 16:19
以下是引用wu8313在2005-8-15 17:56:00的发言:
我怎么感觉是这样的:
给出的两个表达式的值 均为101
1+(0+0+0+100)=101 '表达式之一
1-(0+0+0+100)=101 '表达式之二
----------------------------------------------------------------
还请赐教!谢谢!
[em05],障眼法而已,以后写代码要小心哦,这类问题会害死人的。
作者: wu8313 时间: 2005-8-17 02:02
的确是 够障眼的。 括号的层次很多,我没有分的很清楚。就开始胡乱的使用 立即 来查看。问题的关键就是有好几个零值,即使我把括号分错,也不影响最终结果。 看来四则运算又得学学了。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |