goto语句是怎样执行的

zmhui2050 2008-09-06 06:11:41
Private Sub Command18_Click()
If lf = 1 Then
GoTo 10
End If
Call num_load(".")
10:
End Sub
假如lf=1时
是不是就不执行Call num_load(".")
直接10:
...全文
634 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊孩子开学喽 2008-09-09
  • 打赏
  • 举报
回复
又仔细看了下楼主中间的一大段代码,似乎有种隐隐约约的熟悉感.
想了半天终于想起来哪里眼熟了.

弱问一句:楼主之前是否只接触过APPLE II上的ROM BASIC?
fvflove 2008-09-09
  • 打赏
  • 举报
回复


'将楼盖这么高,不怕楼主摔到了.

'下面代码我帮楼主改好了.用什么Goto 啊.


Sub num_load(n As String)

If lf = 1 Then Exit Sub

If d_data = "0" Or tf = 1 Then

d_data = n

If InStr(d_data, ".") = 0 Then
Text1.Text = d_data + "."
End If

cf = 0
tf = 0
Exit Sub
Else

l1 = Len(d_data)
l1 = l1 - 1

End If

If InStr(d_data, ".") > 0 Then
l1 = l1 - 1
End If

If l1 > 14 Then Exit Sub

d_data = d_data + n

If InStr(d_data, ".") > 0 Then
Text1.Text = d_data
End If

End Sub

zhangchaokun 2008-09-09
  • 打赏
  • 举报
回复
是的
游子 2008-09-09
  • 打赏
  • 举报
回复
很准确的告诉你 是的
6742 2008-09-09
  • 打赏
  • 举报
回复
是的,要少用GOTO,或者尽是不用GOTO

而且GOTO后面所跟的最好也不要用什么10,20之类,最好用一个有意义的词


如跟个有实际意义的词,如GOTO EXITSUB,就表示退出子程序,时间长了后,看到这句一下了就明白是干什么用的
熊孩子开学喽 2008-09-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zhzboy 的回复:]
其实也不尽然,根据实际情况,例如VB中循环没有C里的Continue功能,我常常用GOTO来模似,避免一个长长的IF判断,当然,这些要加注释说清楚的
[/Quote]
VB里面是没有Continue, 在C里面Continue是用来提前结束当前循环, 但是在逻辑上,Continue也只等同于一个IF判断,因此是可以避免的.
zhzboy 2008-09-08
  • 打赏
  • 举报
回复
其实也不尽然,根据实际情况,例如VB中循环没有C里的Continue功能,我常常用GOTO来模似,避免一个长长的IF判断,当然,这些要加注释说清楚的
熊孩子开学喽 2008-09-07
  • 打赏
  • 举报
回复
在VB里面,除了ON ERROR语句后面,其它地方不应该出现GOTO
熊孩子开学喽 2008-09-07
  • 打赏
  • 举报
回复
这种GOTO跳转是没有必要的:
Private Sub Command18_Click()
If lf = 1 Then
GoTo 10
End If
Call num_load(".")
10:
End Sub

你直接写:
Private Sub Command18_Click()
If lf <> 1 Then Call num_load(".")
End Sub
或者写成:
Private Sub Command18_Click()
If lf = 1 Then Exit Sub
Call num_load(".")
End Sub
不就可以了么,你那种写法简直是自讨苦吃
zmhui2050 2008-09-07
  • 打赏
  • 举报
回复
Private Sub Command19_Click()
If cf = 1 Then
GoTo 10
End If
Call num_compute("/")
10:
fuhao = "/"
End Sub
这段代码
假如cf=1
执行了10:
是不是要返回来执行Call num_compute("/")
fvflove 2008-09-07
  • 打赏
  • 举报
回复
看你的代码,好乱.逻辑性不强.

能说一说代码的功能吗?

不定有高手能帮你重写.

你的代码也有问题:

If d_data = "0" Or tf = 1 Then
d_data = n
GoTo 20
End If '这里有 End if
l1 = Len(d_data)
l1 = l1 - 1
End If '这里也有End if 有上一个End if 结果后没有If与此End if 配套,出错.
zmhui2050 2008-09-07
  • 打赏
  • 举报
回复
Sub num_load(n As String)
If lf = 1 Then
GoTo 10
End If
If d_data = "0" Or tf = 1 Then
d_data = n
GoTo 20
End If
l1 = Len(d_data)
l1 = l1 - 1
End If
If InStr(d_data, ".") > 0 Then
l1 = l1 - 1
End If
If l1 > 14 Then
GoTo 10
End If
d_data = d_data + n
If InStr(d_data, ".") > 0 Then
Text1.Text = d_data
End If
20:
If InStr(d_data, ".") = 0 Then
Text1.Text = d_data + "."
End If
cf = 0
tf = 0
10:
End Sub


这里面执行完20: 语句之后
返回去执行,还是直接执行10:
akunkeji 2008-09-07
  • 打赏
  • 举报
回复
"这里面执行完20: 语句之后
返回去执行,还是直接执行10:"
-----会直接执行10:
bob008 2008-09-07
  • 打赏
  • 举报
回复
咋没逻辑
dingyanwei 2008-09-06
  • 打赏
  • 举报
回复
尽量不用或少用goto
SYSSZ 2008-09-06
  • 打赏
  • 举报
回复
没错.
  • 打赏
  • 举报
回复
是这样的
akunkeji 2008-09-06
  • 打赏
  • 举报
回复

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧