设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3567|回复: 12
打印 上一主题 下一主题

[模块/函数] 【讨论】有趣的Access VBA数字之迷

[复制链接]
跳转到指定楼层
1#
发表于 2005-8-14 17:38:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面有一个表达式:

((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编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
13#
发表于 2005-8-17 02:02:00 | 只看该作者
的确是 够障眼的。 括号的层次很多,我没有分的很清楚。就开始胡乱的使用 立即 来查看。问题的关键就是有好几个零值,即使我把括号分错,也不影响最终结果。 看来四则运算又得学学了。
12#
 楼主| 发表于 2005-8-16 16:19:00 | 只看该作者
以下是引用wu8313在2005-8-15 17:56:00的发言:



我怎么感觉是这样的:

给出的两个表达式的值 均为101

1+(0+0+0+100)=101 '表达式之一

1-(0+0+0+100)=101 '表达式之二

----------------------------------------------------------------

还请赐教!谢谢!



[em05],障眼法而已,以后写代码要小心哦,这类问题会害死人的。
11#
发表于 2005-8-16 01:56:00 | 只看该作者
我怎么感觉是这样的:给出的两个表达式的值 均为101 1+(0+0+0+100)=101 '表达式之一1-(0+0+0+100)=101 '表达式之二----------------------------------------------------------------还请赐教!谢谢!
10#
 楼主| 发表于 2005-8-15 17:38:00 | 只看该作者
以下是引用LyxSoft在2005-8-14 19:13:00的发言:



1+0+100=101

1-0+100=101





终于有人道破天机了。

[em05]
9#
发表于 2005-8-15 04:15:00 | 只看该作者
给出的两个表达式的值 均为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编辑过]

8#
发表于 2005-8-15 03:13:00 | 只看该作者
1+0+100=1011-0+100=101
7#
 楼主| 发表于 2005-8-14 19:40:00 | 只看该作者
以下是引用eyewitnes在2005-8-14 11:28:00的发言:





呃,不试算了,我猜应该是32768和-32768之类的结果,嘿嘿



完全不是,你用VBA算一下就知道了。我说了是小把戏,就不会这么复杂的嘛。

[em01]
6#
发表于 2005-8-14 19:28:00 | 只看该作者
以下是引用LucasLynn在2005-8-14 9:58:00的发言:







9494,你看都激起民愤了,赶快做完吧。

[em01]



呃,不试算了,我猜应该是32768和-32768之类的结果,嘿嘿
5#
发表于 2005-8-14 19:02:00 | 只看该作者
本来就是帮你想的,这种东西你在行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-26 00:46 , Processed in 0.208217 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表