找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2159|回复: 26
打印 上一主题 下一主题
收起左侧

关于C语言while循环的疑问

  [复制链接]
跳转到指定楼层
楼主
ID:674308 发表于 2020-1-16 15:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
整个程序只有一个t的定义,无实际值。这个代码究竟是什么意思?
void Delay(unsigned int t)
{
while(--t);
}
上面四行代码的t在整个代码中都没有实际赋值,所以while执行到什么时候?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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次后退出
回复

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

7#
ID:686758 发表于 2020-1-16 20:24 | 只看该作者
当t=0时,就会退出循环
回复

使用道具 举报

8#
ID:686782 发表于 2020-1-16 21:40 | 只看该作者
函数定义而已...
实际调用时根据你调用情况会赋值 就像前面楼上几位说的一样
回复

使用道具 举报

9#
ID:67199 发表于 2020-1-16 23:33 | 只看该作者
void Delay(unsigned int t)   t 为无符号整数型形参
实际调用时void Delay(1000)     1000则为无符号整数 实参
回复

使用道具 举报

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

使用道具 举报

11#
ID:592807 发表于 2020-1-17 08:35 | 只看该作者
t时型参,当你调用时就会给他赋值了。比如Delay(100);
回复

使用道具 举报

12#
ID:524818 发表于 2020-1-17 08:40 | 只看该作者
1楼正解,这是函数定义,在主程序里用时括号里填的数值就是t的赋值
回复

使用道具 举报

13#
ID:282850 发表于 2020-1-17 09:09 | 只看该作者
这是典型的空循环,也就是延时函数。
回复

使用道具 举报

14#
ID:420836 发表于 2020-1-17 10:00 | 只看该作者
这是带参数的延时子程序,调用时对参数 t 赋值。循环执行 t = t-1, 直到 t=0,子程序调用结束。
回复

使用道具 举报

15#
ID:475247 发表于 2020-1-17 10:20 | 只看该作者
这是形参函数,调用该函数时可用实际数值替换掉t变量
回复

使用道具 举报

16#
ID:686963 发表于 2020-1-17 16:10 | 只看该作者
这是一个子函数,在调用该函数的时候,会带入参数,也就是t的值
回复

使用道具 举报

17#
ID:687093 发表于 2020-1-18 12:30 | 只看该作者
执行到t = 0;就停止了
回复

使用道具 举报

18#
ID:687295 发表于 2020-1-19 10:13 | 只看该作者
你需要看看C语言,bilibili、墨课上有很多基础知识视屏
回复

使用道具 举报

19#
ID:674308 发表于 2020-1-19 11:02 | 只看该作者
谢谢各位指导,这个知识点已经学到!基础确实薄弱。在学习中。在论坛,找到了组织。
回复

使用道具 举报

20#
ID:687381 发表于 2020-1-19 17:50 | 只看该作者
你要调用这个函数时再给t赋值,等t减到0就停了
回复

使用道具 举报

21#
ID:93224 发表于 2020-1-19 18:38 | 只看该作者
那就要看程序默认的初值是多少了
回复

使用道具 举报

22#
ID:389856 发表于 2020-1-20 10:51 | 只看该作者
调用Delay的时候会赋值t的。例如Delay(5),就把t赋值为5
回复

使用道具 举报

23#
ID:679425 发表于 2020-1-21 10:06 | 只看该作者
调用时就有值,1和5楼很详细的分析
回复

使用道具 举报

24#
ID:524071 发表于 2020-1-21 14:45 | 只看该作者
会一直执行到t=0的时候,然后会推出while循环
回复

使用道具 举报

25#
ID:609989 发表于 2020-1-21 18:02 来自手机 | 只看该作者
angmall 发表于 2020-1-16 19:41
这是软件延时,阻塞延时,就相当于CPU在空跑,
1. 新手的程序都是While大循环里,而且代码执行时间也比较 ...

第二点相当赞同。
回复

使用道具 举报

26#
ID:688320 发表于 2020-1-28 14:46 | 只看该作者
这是带参函数,函数被调用时会将实参传递给形参,就是在函数调用时那个t才会被赋值。
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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