找回密码
 立即注册

QQ登录

只需一步,快速开始

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

C语言while(1)循环中同时并列几个while循环,程序如何执行(非层层嵌套)

  [复制链接]
跳转到指定楼层
楼主
ID:997026 发表于 2022-2-17 17:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果是类似如下这种嵌套:

while(1)
{
  while(temp1)
  {
  }
}

这种比较好理解,先判断内层循环的条件,如果满足为真,则执行内层循环中的代码,直到为假跳出循环回到外层循环的代码中.

如果是如下这种循环并列形式(非层层嵌套),内层的两个循环如何执行?

while(1)
{

while(temp1)
{
}

while(temp2)
{
}

}

如果temp1和temp2都同时为真,那执行哪一个呢,还是同时执行?

望大神赐教!感谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:57657 发表于 2022-2-17 17:54 | 只看该作者
temp1只要为0就结束循环,执行下面的程序。
回复

使用道具 举报

板凳
ID:142059 发表于 2022-2-17 20:33 | 只看该作者
如果temp1和temp2都同时为真,那执行哪一个呢,还是同时执行?如果是普通的单核单片机你这句话不成立,这两个不可能同时成立,程序只能是一条条运行的,你想问的可能是当在中断中让temp1和2都为真,那么退出中断后程序后main中先运行哪个?答:先运行哪个就看被中断的时候main程序运行到哪个位置?如假temp1/2都为假,此时有2种情况:1>运行到temp1前且temp2后被中断,那么中断退出后进入temp1的死循环,2>运行到temp1后且temp2前,相反。
回复

使用道具 举报

地板
ID:624769 发表于 2022-2-17 21:03 | 只看该作者
Angle145 发表于 2022-2-17 20:33
如果temp1和temp2都同时为真,那执行哪一个呢,还是同时执行?如果是普通的单核单片机你这句话不成立,这两 ...

进入 一个 while 循环体之后, 只有当循环条件失效时,才会退出该循环,所以,当两个条件都达成时,只会进入到当前PC指针 指向的循环体,进入之后,当该循环条件失效才会退出,此时另一个循环条件如果依然成立则会进入另一个循环体,
这么说理解了么?
回复

使用道具 举报

5#
ID:879348 发表于 2022-2-18 08:18 | 只看该作者
你说的是操作系统的基本功能,同时运行多个while循环互不干扰
回复

使用道具 举报

6#
ID:277550 发表于 2022-2-18 09:19 | 只看该作者
不管多少层,每层的条件,从里到外分别判断


~~~~~~~~~
回复

使用道具 举报

7#
ID:743654 发表于 2022-2-18 09:30 | 只看该作者
本帖最后由 cheney03 于 2022-2-18 09:33 编辑

按顺序执行,把while(temp1){}和while(temp2){}各看做一条语句就可以了,若temp1为真就一直执行while(temp1){},直到temp1为假跳出该循环再执行while(temp2){};同理temp2为真执行while(temp2){},为假跳出该循环,返回去执行while(temp1){},因为while(1)死循环。像你说的情况temp1和temp2都为真,那么就只能一直执行while(temp1){},无法跳出。
回复

使用道具 举报

8#
ID:584814 发表于 2022-2-18 10:14 | 只看该作者
一个丐帮长老经常吃了上顿没下顿,问题:
如果一日三餐,早饭、午饭、晚饭都有,应该先吃哪顿 ?
回复

使用道具 举报

9#
ID:908826 发表于 2022-2-18 11:54 | 只看该作者
本帖最后由 13205495918 于 2022-2-18 11:56 编辑

单核处理器,cpu在同一时刻只能处理一个任务,没办法两个while()同时进行,也就是单线程,你如果想了解模拟多线程这种东西,建议学一下rtos
回复

使用道具 举报

10#
ID:453974 发表于 2022-2-18 14:02 | 只看该作者
程序当然是从上到下执行的了,肯定先判断一个,再判断另外一个
回复

使用道具 举报

11#
ID:1005694 发表于 2022-2-18 15:22 | 只看该作者
从上到下依次执行呗
回复

使用道具 举报

12#
ID:951528 发表于 2022-2-18 16:53 | 只看该作者
哪有并列之说啊,你这分明是1在前2在后
回复

使用道具 举报

13#
ID:142059 发表于 2022-2-19 12:36 | 只看该作者
188610329 发表于 2022-2-17 21:03
进入 一个 while 循环体之后, 只有当循环条件失效时,才会退出该循环,所以,当两个条件都达成时,只会 ...

回复错人了吧。。。
回复

使用道具 举报

14#
ID:1003077 发表于 2022-2-19 19:58 | 只看该作者
明显是顺序程序,从上往下按顺序执行,条件成立就一直执行当前while
回复

使用道具 举报

15#
ID:1003226 发表于 2022-2-23 10:32 | 只看该作者
顺序执行 while(1);停止
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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