|||
VB问题集锦
1 问题1. 语句“Print 17/25/2”的结果为什么是4而不是3?
a) 首先,注意到乘法和除法的优先级高于整除,所以此题的运算顺序是:i% = (17/2) (5/2);
b) 其次,遇到整除“”这个二元运算符,它的前后项都应该变换为整数,也就是,对于ab而言,不管a和b是否为整数,都应该将a和b都先化为整数,先化为整数的原则是“四舍五入”,而VB中,“四舍五入”的函数为Round(),所以“ab”就等于“Round (a) Round (b)”;
c) 最后,VB中“四舍五入”的原则是什么?答案是:五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一。因此有:Round(8.51)为“9”,Round(8.5)为“8”,Round(7.5)也为“8”。
d) 综上,17/25/2=(17/2)(5/2)=(8.5)( 2.5)=82=4;反之,如果是8.512.51=93=3.
2. Width、Height、ScaleWidth、ScaleHeight;Left、Top、ScaleLeft、ScaleTop,这些概念的区别?
a) 对于窗体而言:
b) 对于控件而言,只有Left、Top、Width、Height的概念,而没有ScaleLeft、ScaleTop、ScaleWidth、ScaleHeight的概念:
3. “用Public声明的数组是全局量”这个说法为什么是错的?
答:在窗体模块(.frm文件)中,如下声明是非法的:
Public arr(1 To 10) As Integer
Public s2 As String * 10
但在标准模块(p.97,也就是.bas文件)中,是可以这样声明的。所以,上面的说法是不全面的,应该这样说:在标准模块中用public声明的数组是全局量。
4. P.140, “将Label1标签向下移动100个刻度单位……”这一段话如何理解?
这里讲的是在VB中如何使用函数或方法的“缺省参数”(也称为“可选参数”,见p.32),缺省参数是可以不输入的,例如Move方法,它的语法提示如下:
[Object.]Move Left [, Top[, Width[, Height] ]]
这里的方括号“[]”是什么意思?[]表示缺省参数。也就是说,只有Left不是缺省参数,在使用Move方法的时候,该参数必须给出。例如:
Label1.Move300
它表示把Label1水平移动到距离窗体左边300的位置,它的Top 、Width和Height都不改变。
如果只想上下移动Label1,而不想水平移动Label1,那么,必须这样写:
Label1.MoveLabel1.Left, Label1.Top + 100
它表示把Label1垂直向下移动100个单位。而不能这样写:
Label1.Move, Label1.Top + 100
因为第一个参数不是缺省参数。
另外,请注意“[Object.]MoveLeft [, Top[, Width[, Height] ] ]”这一语法结构中[]的嵌套格式,Width的缺省是嵌套在Top的缺省之中的,也就是说,如果要通过Move方法重置Label1的宽度,必须这样写:
Label1.MoveLabel1.Left, Label1.Top, Label1.Width + 1000
而不能这样写:
Label1.Move, , Label1.Width + 1000
也不能这样写:
Label1.MoveLabel1.Left, , Label1.Width + 1000
同样,可知,如果只想通过Move方法改变Label1的Height(因为Width和Height变了,整个Label1看起来也是“移动”了的),而不想改变Label1的Left和Top,那么应该这样写:
Label1.MoveLabel1.Left, Label1.Top, Label1.Width, Label1.Height + 1500
四个参数,一个都不能少!
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-6-16 22:39
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社