找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

C语言程序执行顺序问题

查看数: 4796 | 评论数: 13 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-10-30 13:43

正文摘要:

# include <stdio.h> int main(void) { do {     int i,j;     for (i=0; i<4; i++)     {         printf("a");      &nbs ...

回复

ID:837937 发表于 2020-11-2 20:15
for循环走完后,有return就直接跳出main函数了,所以只走了一次,把return删掉
ID:833190 发表于 2020-11-2 20:15
feelings 发表于 2020-11-2 15:02
当我去掉循环里的延时函数,以及定义pulse里面的延时函数是,就没有这个问题了,但是我又需要延时操作, ...

可能是你延时过长,当下一次采集到的str[11]时,上一次还没执行完,但是又进行了if判断。你设置一个标志位,当str[11]满足条件时,标志位为1,当执行完全部for循环后清除标志位。用这个标志位作为if里面的条件。
ID:833190 发表于 2020-11-2 19:59
你把return 0放在while的下一行就行,你现在放在while前面了,当跳出里面的for循环后就执行了return 0,这个程序就直接结束了,不会执行后面的while判断。
ID:708768 发表于 2020-11-2 15:02
feelings 发表于 2020-10-30 17:31
关于循环的程序我还有一个问题,图在下方
整个程序在板子上运行时,在两层的for循环语句里,每次第一层走 ...

当我去掉循环里的延时函数,以及定义pulse里面的延时函数是,就没有这个问题了,但是我又需要延时操作,要怎么改程序
ID:708768 发表于 2020-11-2 10:29

我用keil调试后,在第二张图的221行和223行放断点,在watch中看 i 和 j 的值,然后同样是在走第二遍循环时, i 和 j 的值显示cannot evaluate
ID:420836 发表于 2020-11-1 06:19
那是while(1)和do-while(1)之间的区别
ID:830240 发表于 2020-10-31 17:04
把return 0去掉或者注释掉,程序运行到return它就返回函数口,不再执行下面的语句,也就不会判断while是否为真了
ID:654028 发表于 2020-10-31 16:15
feelings 发表于 2020-10-30 17:31
关于循环的程序我还有一个问题,图在下方
整个程序在板子上运行时,在两层的for循环语句里,每次第一层走 ...

debug调试一下吧
ID:708768 发表于 2020-10-30 17:29
xuchaopan 发表于 2020-10-30 15:46
哈哈哈,你如果只需要程序一直循环跑,那么就把while(1)放在do的位置,do不要就可以了。
像这样:
# incl ...

看到了,谢谢
ID:234075 发表于 2020-10-30 16:36
如果要一直循环下去,while(1);放在最后使程序停止在这里(进入循环),所以只打印输出1次;
ID:675145 发表于 2020-10-30 16:10
return 0;这条语句跳出循环了
ID:836680 发表于 2020-10-30 15:46
哈哈哈,你如果只需要程序一直循环跑,那么就把while(1)放在do的位置,do不要就可以了。
像这样:
# include <stdio.h>
int main(void)
{
while(1){
    int i,j;
    for (i=0; i<4; i++)
    {
        printf("a");
        for (j=0; j<3; j++)
        {
            printf("b");
        }
    }
  //  return 0;
}
}

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

Powered by 单片机教程网

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