do while循环嵌套的问题 20

voidDelay100ms()//@11.0592MHz{unsignedchari,j,k;i=5;j=52;k=195;do{do{while(--k);}whil... void Delay100ms() //@11.0592MHz
{
unsigned char i, j, k;

i = 5;
j = 52;
k = 195;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
这是单片机的一段延时函数,用的STC下载软件自动生成的,但是里面的循环完全没看懂,我想问一下,多个do while 和while嵌套循环时,程序的执行方式是怎么样的?
请问,这个循环中大约执行了多少条语句?
如果最里层的循环第一次结束了,那么变量k不就为0了,以后执行的时候最里层的循环不就不执行了?
如果改为for循环,每次循环最里层的循环都会有赋初值,但是dowhile没有赋初值?
展开
 我来答
john_lee1969
2014-07-19 · TA获得超过1700个赞
知道小有建树答主
回答量:419
采纳率:100%
帮助的人:530万
展开全部
循环就是一个语句而已,如果循环里面还有循环,就等里面的循环结束了,继续外面的循环。
追问
那么请问,这个循环中大约执行了多少条语句?
如果最里层的循环第一次结束了,那么变量k不就为0了,以后执行的时候最里层的循环不就不执行了?
如果改为for循环,每次循环最里层的循环都会有赋初值,但是dowhile没有赋初值?
追答
最里层的循环每次结束时,k 确实为 0 了,但你要注意,while 的判断表达式是 --k,就是说,判断的值是 k 先减了 1 的值。所以下一次再进入循环时,虽然 k 为 0,但判断之前先减 1,就不为 0 了,而为 0 - 1 等于 -1,换算为无符号数是 255。
可以这样说,如果循环的判断变量(i,j,k)如果在进入循环前的值为 0,那么循环执行 256 次,如果循环变量是两字节的(int,unsigned int),那么循环执行 65536 次。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
禄博Qy
2014-07-19 · 超过62用户采纳过TA的回答
知道答主
回答量:114
采纳率:100%
帮助的人:116万
展开全部
Do While Not RSn.Eof Do While RSn("log_cstitle")=true Do While RSn("log_jctitle")=true 这样啊?? 没见过 ,高啊 搞一个循环 Do While Not RSn.Eof and RSn("log_cstitle")=true and RSn("log_jctitle")=true ............ loop 或者 Do While Not RSn.Eof ................ RSn.Movenext row=row+1 if row=10 then Exit do end If loop Do While RSn("log_jctitle")=true ............... Loop
追问
请说中文= =
看不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式