找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3690|回复: 26
收起左侧

关于C语言while循环的疑问

  [复制链接]
ID:674308 发表于 2020-1-16 15:42 | 显示全部楼层 |阅读模式
整个程序只有一个t的定义,无实际值。这个代码究竟是什么意思?
void Delay(unsigned int t)
{
while(--t);
}
上面四行代码的t在整个代码中都没有实际赋值,所以while执行到什么时候?
回复

使用道具 举报

ID:282519 发表于 2020-1-16 18:24 | 显示全部楼层
比如Delay(1000),就是调用void Delay(unsigned int t)这个函数,1000会直接替换成t,不知道你理解不理解,不理解只能说明基础薄弱
回复

使用道具 举报

ID:378182 发表于 2020-1-16 18:53 | 显示全部楼层
这是带参子程序,调用时要对参数 t 赋值。调用后子程序循环对 t = t-1,直到 t=0,退出子程序。
回复

使用道具 举报

ID:235200 发表于 2020-1-16 19:15 | 显示全部楼层
在调用时就有值了,如Delay(1000),这样t的值就是1000,while循环执行1000次后退出
回复

使用道具 举报

ID:155507 发表于 2020-1-16 19:41 | 显示全部楼层
这是软件延时,阻塞延时,就相当于CPU在空跑,
1. 新手的程序都是While大循环里,而且代码执行时间也比较短,这个时候用软件延时看不出来明显的差异。

2. 一般不建议使用软件延时,因为CPU的资源是有限的,软件延时就相当于CPU在空跑,当程序比较庞大的时候,许多程序处理不过来,根本没有多余的时间给你去延时。
回复

使用道具 举报

ID:686752 发表于 2020-1-16 20:08 | 显示全部楼层
unsigned int t为无符号整形,int t 输入t,t为整形,也就是输入一个整数;while(--t)的意思是没循环一次t-1,当减到0时,循环结束。
回复

使用道具 举报

ID:686758 发表于 2020-1-16 20:24 | 显示全部楼层
当t=0时,就会退出循环
回复

使用道具 举报

ID:686782 发表于 2020-1-16 21:40 | 显示全部楼层
函数定义而已...
实际调用时根据你调用情况会赋值 就像前面楼上几位说的一样
回复

使用道具 举报

ID:67199 发表于 2020-1-16 23:33 | 显示全部楼层
void Delay(unsigned int t)   t 为无符号整数型形参
实际调用时void Delay(1000)     1000则为无符号整数 实参
回复

使用道具 举报

ID:686820 发表于 2020-1-17 02:35 | 显示全部楼层
void Delay(unsigned int t) 你发的这段程序是函数定义。别的地方有调用这个程序的!比如Delay(100),此时t被赋值,t=100。
回复

使用道具 举报

ID:592807 发表于 2020-1-17 08:35 | 显示全部楼层
t时型参,当你调用时就会给他赋值了。比如Delay(100);
回复

使用道具 举报

ID:524818 发表于 2020-1-17 08:40 | 显示全部楼层
1楼正解,这是函数定义,在主程序里用时括号里填的数值就是t的赋值
回复

使用道具 举报

ID:282850 发表于 2020-1-17 09:09 | 显示全部楼层
这是典型的空循环,也就是延时函数。
回复

使用道具 举报

ID:420836 发表于 2020-1-17 10:00 | 显示全部楼层
这是带参数的延时子程序,调用时对参数 t 赋值。循环执行 t = t-1, 直到 t=0,子程序调用结束。
回复

使用道具 举报

ID:475247 发表于 2020-1-17 10:20 | 显示全部楼层
这是形参函数,调用该函数时可用实际数值替换掉t变量
回复

使用道具 举报

ID:686963 发表于 2020-1-17 16:10 | 显示全部楼层
这是一个子函数,在调用该函数的时候,会带入参数,也就是t的值
回复

使用道具 举报

ID:687093 发表于 2020-1-18 12:30 | 显示全部楼层
执行到t = 0;就停止了
回复

使用道具 举报

ID:687295 发表于 2020-1-19 10:13 | 显示全部楼层
你需要看看C语言,bilibili、墨课上有很多基础知识视屏
回复

使用道具 举报

ID:674308 发表于 2020-1-19 11:02 | 显示全部楼层
谢谢各位指导,这个知识点已经学到!基础确实薄弱。在学习中。在论坛,找到了组织。
回复

使用道具 举报

ID:687381 发表于 2020-1-19 17:50 | 显示全部楼层
你要调用这个函数时再给t赋值,等t减到0就停了
回复

使用道具 举报

ID:93224 发表于 2020-1-19 18:38 | 显示全部楼层
那就要看程序默认的初值是多少了
回复

使用道具 举报

ID:389856 发表于 2020-1-20 10:51 | 显示全部楼层
调用Delay的时候会赋值t的。例如Delay(5),就把t赋值为5
回复

使用道具 举报

ID:679425 发表于 2020-1-21 10:06 | 显示全部楼层
调用时就有值,1和5楼很详细的分析
回复

使用道具 举报

ID:524071 发表于 2020-1-21 14:45 | 显示全部楼层
会一直执行到t=0的时候,然后会推出while循环
回复

使用道具 举报

ID:609989 发表于 2020-1-21 18:02 来自触屏版 | 显示全部楼层
angmall 发表于 2020-1-16 19:41
这是软件延时,阻塞延时,就相当于CPU在空跑,
1. 新手的程序都是While大循环里,而且代码执行时间也比较 ...

第二点相当赞同。
回复

使用道具 举报

ID:688320 发表于 2020-1-28 14:46 | 显示全部楼层
这是带参函数,函数被调用时会将实参传递给形参,就是在函数调用时那个t才会被赋值。
回复

使用道具 举报

ID:688433 发表于 2020-1-28 16:26 | 显示全部楼层
这是个子函数,简单来说这个是一个你建立的模型,在main函数引用时就相当于把这个模型引用到你的主体里面,根据需要再赋予t实际值。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表