提到VB中的冒号,许多人都以为是:“一行可书写几句语句”。这么说是对的,但是有一种情况是不对的,那就是在条件语句中。这也是做一个VB项目升级的时候遇到,这不是程序员的问题,应该是VB语法上的漏洞。如果有理解不对的地方欢迎大家指教。
看一个例子吧:
1 If Row1 = -1 Then Row1 = 0: If Row2 = -1 Then Row2 = .MaxRows
我们一般的理解是执行完第一if语句接着将执行第二个语句,应该是下面的样子:
If Row1 = -1 Then Row1 = 0
If Row2 = -1 Then Row2 = .MaxRows
但是事实上不是这样的,变成下面的形式了。这样的形式并不是我们想要的结果。
If Row1 = -1 Then
Row1 = 0
If Row2 = -1 Then Row2 = .MaxRows
End If
我想这个语法对于不熟悉VB的人做代码移植应该是一个非常隐蔽的bug。希望能够对大家有帮助。
Private Sub Form_click()
Dim sum, max, xb, average, a(9) As Integer
Randomize
For i = 0 To 9
a(i) = Int(90 * Rnd + 10): Print a(i);
'若该语句后面没有分号则输出的是个随机数各自占一行
'分号表示光标定位在上一个显示的字符后
'逗号表示光标定位在下一个答应去的开始位置
'无分号或者冒号,则表示输出后换行
Next i
Print
sum = 0
For i = 0 To 9
sum = sum + a(i)
Next i
average = sum / 10
Print "各元素累加和="; sum, "平均值="; average
Print
max = a(0)
xb = 0
For i = 0 To 9
If a(i) > max Then max = a(i): xb = i
'此处冒号的作用就是相当于括号把max = a(i)和xb = i连接起来,作为if的一个执行块
Next i
Print "最大值为:"; max, "其元素下标为:"; xb
End Sub
(print后面有分号)
(print后面没有任何符号)
除去if语句外,冒号的作用是表示在一行有多条语句
阅读(11065) | 评论(0) | 转发(0) |