标题: 关于C语言while循环的疑问 [打印本页]

作者: Enchip    时间: 2020-1-16 15:42
标题: 关于C语言while循环的疑问
整个程序只有一个t的定义,无实际值。这个代码究竟是什么意思?
void Delay(unsigned int t)
{
while(--t);
}
上面四行代码的t在整个代码中都没有实际赋值,所以while执行到什么时候?

作者: 海盗船    时间: 2020-1-16 18:24
比如Delay(1000),就是调用void Delay(unsigned int t)这个函数,1000会直接替换成t,不知道你理解不理解,不理解只能说明基础薄弱
作者: znz43a    时间: 2020-1-16 18:53
这是带参子程序,调用时要对参数 t 赋值。调用后子程序循环对 t = t-1,直到 t=0,退出子程序。
作者: csmyldl    时间: 2020-1-16 19:15
在调用时就有值了,如Delay(1000),这样t的值就是1000,while循环执行1000次后退出
作者: angmall    时间: 2020-1-16 19:41
这是软件延时,阻塞延时,就相当于CPU在空跑,
1. 新手的程序都是While大循环里,而且代码执行时间也比较短,这个时候用软件延时看不出来明显的差异。

2. 一般不建议使用软件延时,因为CPU的资源是有限的,软件延时就相当于CPU在空跑,当程序比较庞大的时候,许多程序处理不过来,根本没有多余的时间给你去延时。
作者: 梦醒了11    时间: 2020-1-16 20:08
unsigned int t为无符号整形,int t 输入t,t为整形,也就是输入一个整数;while(--t)的意思是没循环一次t-1,当减到0时,循环结束。
作者: 微微凉1    时间: 2020-1-16 20:24
当t=0时,就会退出循环
作者: OHHO    时间: 2020-1-16 21:40
函数定义而已...
实际调用时根据你调用情况会赋值 就像前面楼上几位说的一样
作者: lyxing    时间: 2020-1-16 23:33
void Delay(unsigned int t)   t 为无符号整数型形参
实际调用时void Delay(1000)     1000则为无符号整数 实参
作者: tianjinfeiying    时间: 2020-1-17 02:35
void Delay(unsigned int t) 你发的这段程序是函数定义。别的地方有调用这个程序的!比如Delay(100),此时t被赋值,t=100。
作者: 黄youhui    时间: 2020-1-17 08:35
t时型参,当你调用时就会给他赋值了。比如Delay(100);
作者: cphnkj188    时间: 2020-1-17 08:40
1楼正解,这是函数定义,在主程序里用时括号里填的数值就是t的赋值
作者: f556    时间: 2020-1-17 09:09
这是典型的空循环,也就是延时函数。
作者: TTQ001    时间: 2020-1-17 10:00
这是带参数的延时子程序,调用时对参数 t 赋值。循环执行 t = t-1, 直到 t=0,子程序调用结束。
作者: 还有谁?    时间: 2020-1-17 10:20
这是形参函数,调用该函数时可用实际数值替换掉t变量
作者: popipa    时间: 2020-1-17 16:10
这是一个子函数,在调用该函数的时候,会带入参数,也就是t的值
作者: 13967554080    时间: 2020-1-18 12:30
执行到t = 0;就停止了
作者: 睁开眼来看世界    时间: 2020-1-19 10:13
你需要看看C语言,bilibili、墨课上有很多基础知识视屏
作者: Enchip    时间: 2020-1-19 11:02
谢谢各位指导,这个知识点已经学到!基础确实薄弱。在学习中。在论坛,找到了组织。
作者: xiaoyao逍遥    时间: 2020-1-19 17:50
你要调用这个函数时再给t赋值,等t减到0就停了

作者: lele5211314    时间: 2020-1-19 18:38
那就要看程序默认的初值是多少了
作者: 墨栀    时间: 2020-1-20 10:51
调用Delay的时候会赋值t的。例如Delay(5),就把t赋值为5
作者: haierzaifei11    时间: 2020-1-21 10:06
调用时就有值,1和5楼很详细的分析
作者: kendy7910    时间: 2020-1-21 14:45
会一直执行到t=0的时候,然后会推出while循环
作者: baiyun1234    时间: 2020-1-21 18:02
angmall 发表于 2020-1-16 19:41
这是软件延时,阻塞延时,就相当于CPU在空跑,
1. 新手的程序都是While大循环里,而且代码执行时间也比较 ...

第二点相当赞同。
作者: 满天星..    时间: 2020-1-28 14:46
这是带参函数,函数被调用时会将实参传递给形参,就是在函数调用时那个t才会被赋值。
作者: 化尘封土    时间: 2020-1-28 16:26
这是个子函数,简单来说这个是一个你建立的模型,在main函数引用时就相当于把这个模型引用到你的主体里面,根据需要再赋予t实际值。




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