标题: 关于C语言for循环是怎么执行的?初始值是多少值为多少的时候是跳出循环? [打印本页]

作者: 清晨的粥    时间: 2021-1-29 15:49
标题: 关于C语言for循环是怎么执行的?初始值是多少值为多少的时候是跳出循环?
关于延时函数

void delay(uint t) //定义延时函数
{
register uint bt;
for(;t;t--)  //疑问这里t的值是怎么循环的,初始值是多少值为多少的时候是跳出循环?
    for(bt=0;bt<255;bt++); //这一行就有数值循环可以看懂
}


作者: zswhym    时间: 2021-1-29 18:01
初始值是自己定义的,t减到零的时候跳出循环
作者: rundstedt    时间: 2021-1-29 18:11
调用的时候赋值。t为〇退出。
作者: 清晨的粥    时间: 2021-1-29 20:09
发表于 2021-1-29 18:11
调用的时候赋值。t为〇退出。

非常感谢,明白了,原来后面那个是赋值,我分开看来
作者: rundstedt    时间: 2021-1-29 20:31
清晨的粥 发表于 2021-1-29 20:09
非常感谢,明白了,原来后面那个是赋值,我分开看来

delay的参数是赋值。

register应该改为volatile。c51的作者假设他的用户都不懂这个关键字,所以不写也可以。正规c编译器会直接把变量置〇。
作者: 清晨的粥    时间: 2021-1-29 20:35
发表于 2021-1-29 18:11
调用的时候赋值。t为〇退出。

那为什么会有两行for语句,第一个uint 和第二个tuint bt各有什么意义,这个关系然我思维卡住了,理解不进去

作者: rundstedt    时间: 2021-1-29 20:43
清晨的粥 发表于 2021-1-29 20:35
那为什么会有两行for语句,第一个uint 和第二个tuint bt各有什么意义,这个关系然我思维卡住了,理解不进 ...

写一行时间不够呗,这也看不懂?
作者: kaixuan_27    时间: 2021-1-29 21:48
for (循环变量赋初值; 循环条件; 循环变量增值)for(;t;t--)

循环变量赋初值:不赋初值
循环条件:t > 0
循环变量增值:t-1

作者: 清晨的粥    时间: 2021-1-29 21:53
发表于 2021-1-29 20:43
写一行时间不够呗,这也看不懂?

是两个循环次数相乘吗?包含关系?
作者: rundstedt    时间: 2021-1-29 22:00
清晨的粥 发表于 2021-1-29 21:53
是两个循环次数相乘吗?包含关系?

你自己仔细想想吧,大概是对的。
作者: 清晨的粥    时间: 2021-1-29 22:20
rundstedt 发表于 2021-1-29 22:00
你自己仔细想想吧,大概是对的。

谢谢大神




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1