发 帖  
原厂入驻New
[问答] 如果执行了else 中的break那么退出的语句是else还是直接退出else所在的while,且不执行此while内的其他语句?
22 while
分享
1、u8 RTC_Get(void)
{
static u16 daycnt=0;
u32 timecount=0;
u32 temp=0;
u16 temp1=0;   
   
timecount=RTC->CNTH;//得到计数器中的值(秒钟数)
timecount<<=16;
timecount+=RTC->CNTL;   
temp=timecount/86400;   //得到天数(秒钟数对应的)
IF(daycnt!=temp)//超过一天了
{   
  daycnt=temp;
  temp1=1970; //从1970年开始
  while(temp>=365)
  {     
   if(Is_Leap_Year(temp1))//是闰年
   {
    if(temp>=366)temp-=366;//闰年的秒钟数
    else break;  
   }
   else temp-=365;   //平年
   temp1++;  
  }   
  timer.w_year=temp1;//得到年份
  temp1=0;
}  
想请问如果执行了else 中的break,
那么退出的语句是else
还是直接退出else所在的while,且不执行此while内的其他语句( else temp-=365;      temp1++;  )?
2、
float pi=3.14;
for(r=1;r<=10;r++)
{
    area=pi*r*r;
if(area>=100)break;
printf("r=%f,area=%f\n",r,area);   
}
如果当area=100,执行if(area>=100)break;
那么break是退出if继续执行printf
还是直接退出for,不执行printf, 希望师兄指教  
我自己感觉是都选择后者 不知道对不对
0
2020-8-27 03:49:35   评论 分享淘帖 邀请回答
5个回答
1,c语言基础问题.没见过break是退出else的.
2,又是基础问题,我也没见过break是退出if的.
囧.....
2020-8-27 13:44:03 评论

举报

1、那为啥switch的else break是退出switch啊 ?
2、那如果
float pi=3.14;
while(1)
{
    for(r=1;r<=10;r++)
    {
        area=pi*r*r;
    if(area>=100)break;
    printf("r=%f,area=%f\n",r,area);    
    }
}
如果当area=100,执行if(area>=100)break;
那么break是退出for还是while呢
2020-8-27 13:49:04 评论

举报

自己软件仿真找答案吧.
另外,c语言基础问题,问你c语言老师,或者买本c语言的书看看比较实在.
2020-8-27 13:55:35 评论

举报

break应该是跳出整个循环语句,执行后面的语句吧。
2020-8-27 14:13:45 评论

举报

按您说的 调试后 是跳出离esle break最近的循环体
2020-8-27 14:32:59 评论

举报

只有小组成员才能发言,加入小组>>

83个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /8 下一条

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