一个小问题,它的循环次数为什么是8次????

lyt317 2004-09-05 07:04:30
Private Sub Command1_Click()
a = 10
b = 3
For i = a To b Step -1
Print "*";
b = b + 1
Next i
End Sub

这道题中为什么b = b + 1不影响循环次数呢?为什么输出的结果是8星??很郁闷!!!
...全文
259 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyt317 2004-09-06
  • 打赏
  • 举报
回复
书上是这样说的,在其他语言中也是这样的吗?以前不是太注意这个问题。为什么要这样做呢?
difa 2004-09-05
  • 打赏
  • 举报
回复
Byval & Byref
lsftest 2004-09-05
  • 打赏
  • 举报
回复
看看基础书上 FOR …… NEXT 的原理解释就知道了,这也是个常见的误区。
=======================================
我倒觉得楼主说的是一个很有用的功能,我在编程的时候也常常想,如果能在循环内动态修改循环的初值、终值、步长,很多时候会省很多工夫的。。。但不知道为什么普遍的编程语言的循环语句都没有这功能。。。。
作为变通,用do。。。loop或do。。。loop+for。。。next吧。。。。
northwolves 2004-09-05
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
a = 10
b = 3
Do While a > b
Print "*";
a = a - 1
b = b + 1
Loop
End Sub
  • 打赏
  • 举报
回复
看看基础书上 FOR …… NEXT 的原理解释就知道了,这也是个常见的误区。
ehom 2004-09-05
  • 打赏
  • 举报
回复
没说不能,不用for循环,用while循环不就行了~~~当然在支持嵌入ASM的语言中,直接改变寄存器值也行,只是这么做非常多余.不需要理论论述,学过汇编的人都知道
双层木屋 2004-09-05
  • 打赏
  • 举报
回复
为什么不能改变终值?有什么理论上的论述吗?
ehom 2004-09-05
  • 打赏
  • 举报
回复
是寄存器,不是内存
iiboy 2004-09-05
  • 打赏
  • 举报
回复
对呀,在for循环中的终值是在开始执行循环的时候就定下来了,也就是说,已经被存储在一个特定的区域,它的值将不能在程序中被更改.
Andy__Huang 2004-09-05
  • 打赏
  • 举报
回复
循環開始時,步長與循環次數已經確定下來,也就先保存到內存中了,
  • 打赏
  • 举报
回复
for next循环是确定性循环
要想影响的话用do loop
rainstormmaster 2004-09-05
  • 打赏
  • 举报
回复
//这道题中为什么b = b + 1不影响循环次数呢?为什么输出的结果是8星??很郁闷!!!

郁闷什么,在循环开始时a和b以及步长-1就被保存到了内存中

7,759

社区成员

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

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