标题: C语言while(1)循环中同时并列几个while循环,程序如何执行(非层层嵌套) [打印本页]

作者: hxdby    时间: 2022-2-17 17:47
标题: C语言while(1)循环中同时并列几个while循环,程序如何执行(非层层嵌套)
如果是类似如下这种嵌套:

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

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

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

while(1)
{

while(temp1)
{
}

while(temp2)
{
}

}

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

望大神赐教!感谢!

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

进入 一个 while 循环体之后, 只有当循环条件失效时,才会退出该循环,所以,当两个条件都达成时,只会进入到当前PC指针 指向的循环体,进入之后,当该循环条件失效才会退出,此时另一个循环条件如果依然成立则会进入另一个循环体,
这么说理解了么?
作者: wufa1986    时间: 2022-2-18 08:18
你说的是操作系统的基本功能,同时运行多个while循环互不干扰
作者: devcang    时间: 2022-2-18 09:19
不管多少层,每层的条件,从里到外分别判断


~~~~~~~~~
作者: cheney03    时间: 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){},无法跳出。
作者: man1234567    时间: 2022-2-18 10:14
一个丐帮长老经常吃了上顿没下顿,问题:
如果一日三餐,早饭、午饭、晚饭都有,应该先吃哪顿 ?
作者: 13205495918    时间: 2022-2-18 11:54
本帖最后由 13205495918 于 2022-2-18 11:56 编辑

单核处理器,cpu在同一时刻只能处理一个任务,没办法两个while()同时进行,也就是单线程,你如果想了解模拟多线程这种东西,建议学一下rtos
作者: 累不死的狗    时间: 2022-2-18 14:02
程序当然是从上到下执行的了,肯定先判断一个,再判断另外一个

作者: guanyquan    时间: 2022-2-18 15:22
从上到下依次执行呗
作者: zenmoleshi    时间: 2022-2-18 16:53
哪有并列之说啊,你这分明是1在前2在后
作者: Angle145    时间: 2022-2-19 12:36
188610329 发表于 2022-2-17 21:03
进入 一个 while 循环体之后, 只有当循环条件失效时,才会退出该循环,所以,当两个条件都达成时,只会 ...

回复错人了吧。。。
作者: Hjc12345678    时间: 2022-2-19 19:58
明显是顺序程序,从上往下按顺序执行,条件成立就一直执行当前while
作者: mimidog111    时间: 2022-2-23 10:32
顺序执行 while(1);停止




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