关于VBS的一个怪现象
今天一个同学让我帮忙写一个程序,要求是:
输入一个n,返回从0到n中任意个数的组合,返回取异或结果为0的组合。来看VBS代码
n =
p = ""
for i = to ^n -
s =
for j = to n-
s = s xor (j+) * ((i and ^j) / ^j)
next
if s= then
D2B(i)
end if
next
'Set objFSO = CreateObject("Scripting.FileSystemObject")
'Set objFile = objFSO.OpenTextFile("result.txt",2,true)
'objFile.WriteLine result
Function D2B(Dec)
if Dec = then
D2B =
else
Do While Dec >
D2B = Dec Mod & D2B
Dec = Dec \
Loop
end if
msgbox D2B
End Function
恩,很短小的代码,但是怪就怪在下面那个函数上了,上面代码这样
if s=0 then
D2B(i)
end if
时,输出结果没有问题,很正常。
但是当把代码改为:
if s=0 then
result = D2B(i)
end if
结果就不正常了。使用
Wscript.exe /X E:\debug.vbs
调试,结果发现是由于参数i传进函数为byref的,所以在函数内部对i做出了改变,于是就死循环了。但是为什么不对函数结果赋值是就没问题呢?待研究
(vb默认byref,vb.net默认byval)
一个很全的VBS博客了给出了解释。。。
标题: VBS过程和函数参数传递的方式默认是ByVal还是ByRef?
作者: Demon
链接: http://demon.tw/programming/vbs-byval-byref.html
果然有盲点啊
附完整版代码:
n =
result = ""
for i = to ^n -
s =
for j = to n-
s = s xor (j+) * ((i and ^j) / ^j)
next
if s= then
temp = i
result = result & D2B(temp) & chr() & chr()
end if
next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("result.txt",,true)
objFile.WriteLine result
Function D2B(Dec)
if Dec = then
D2B = ""
else
Do While Dec >
D2B = Dec Mod & D2B
Dec = Dec \
Loop
end if
for k = to n-len(D2B)
D2B = "" & D2B
next
End Function
关于VBS的一个怪现象的更多相关文章
- Javascript的一个怪现象
javascript有一个怪现象,就是减法也会导致小数位数问题,是一个麻烦的问题,比如. <html><script> var a=10,b=20.1; alert( a - ...
- pspad的一个怪现象:在一些空行的位置出现个别不该出现的字符
在用pspad编辑一个外来文件时,发现有许多空行的结尾会出现一些单个字符,字符内容与翻页前那一页相应位置的字符相同. 好奇怪.上网找不到原因.pspad太好用了,不想因此放弃. 仔细观察,这些空行往往 ...
- linux nfs怪现象——软连接、文件属主的变更
怪现象:proxmox:/etc-asterisk# ls sip.confsip.confproxmox:/etc-asterisk# more sip.confsip.conf: No such ...
- 「SAP 技术」SAP BP显示供应商账户组时候的怪现象
SAP BP显示供应商账户组时候的怪现象 BP事务代码显示某个vendor的时候,笔者发现对于账户组字段选项列表里,不显示当前vendor的account group. 如下图,该供应商的accoun ...
- for循环产生的Cortex-M3汇编代码的一个奇怪现象
最近比较一下KEIL和IAR两个编译器产生的代码,基于Cortex-M3处理器的,然后发现了一几个奇怪的地方. 很简单的一个C的for循环 void fun_for_add_65535(void) { ...
- 如何用VBS编写一个简单的恶搞脚本
windows系统的电脑, 首先右击桌面,选择新建-文本文档,在桌面上新建一个文本文档: 随后打开计算机或者是我的电脑,点击其中的组织(xp系统多为工具),选择下面的文件夹和搜索选项 ...
- PHP 浮点型转整型的一个奇怪现象
起因 最近通过一个学长的题了解php弱类型的时候,发现了一个奇怪的现象. 正文 主要问题在这样一段代码: $c=(int)((0.1+$b)*10); 当$b=0.6,0.8以及其他值的时候都正常 将 ...
- 一个神秘现象引发对beego框架的思考
小强最近在项目中遇到了一个很奇怪的问题:在整改日志规范时,为了避免影响现有的代码结构以及改动尽可能小的前提下,在调用记日志的SDK处将某一个字段值首字母改为大写,代码示例如下: fmt.Println ...
- PHP函数 rtrim() 的一个怪异现象
今天用rtrim()函数时遇到了一个奇怪的问题: echo rtrim('<p></div>', '</div>'); // 输出为 <p echo ltri ...
随机推荐
- 在PHP中对查询出得数据库数据进行json编码
select.php <?php $con = mysql_connect("localhost","Thh","920920thh" ...
- oracle查询题目2道
1.列出与“SCOTT”从事相同工作的所有员工. ①先查询SCOTT从事的是什么工作 select job from emp where name like='SCOTT'; ②select enam ...
- AngularJS:template
ylbtech-AngularJS: 1.返回顶部 1. 2. 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 9 ...
- win7 网站发布备注
1.更改 .NET Framework 版本(改原设置v2.0 为v4.0) 2.程序池设置 3.基本设置 4.Web.config (debug="false") <sys ...
- PyYAML和configparser模块讲解
Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation ymal主要用于配置文件. Co ...
- 混搭下的C与C++内存操作
源自最近遇到一个的问题,先介绍一下背景.项目中混用了C与C++编程范式,鉴于项目成员背景不一,每个模块的负责人可以自行2选1.同时为了提高效率,C范式的模块被允许使用STL库的部分容器(其实也就仅仅大 ...
- Cassandra学习五 使用Key的正确姿势
NoSQL一般是反范式的,比如提倡数据冗余,使得不至于写出非常复杂的SQL语句. Cassandra之中一共包含下面5中Key: Primary Key: 用来获取某一行的数据,可以是一列或多列 ...
- andriod/ios webview与js交互 html_demo
<html> <head> <title>测试</title> </head> <body> <h3>Android ...
- 第十一章 SpringMvc(待续)
············
- Centos安装php高版本
安装 1.检查当前是否有安装php rpm -qa|grep php 如果有安装PHP,那么请先删除这些安装包: yum remove php* 2.安装php源 Centos 5 安装php源: ...