for循环走完后,有return就直接跳出main函数了,所以只走了一次,把return删掉 |
feelings 发表于 2020-11-2 15:02 可能是你延时过长,当下一次采集到的str[11]时,上一次还没执行完,但是又进行了if判断。你设置一个标志位,当str[11]满足条件时,标志位为1,当执行完全部for循环后清除标志位。用这个标志位作为if里面的条件。 |
你把return 0放在while的下一行就行,你现在放在while前面了,当跳出里面的for循环后就执行了return 0,这个程序就直接结束了,不会执行后面的while判断。 |
feelings 发表于 2020-10-30 17:31 当我去掉循环里的延时函数,以及定义pulse里面的延时函数是,就没有这个问题了,但是我又需要延时操作,要怎么改程序 |
心有浮生 发表于 2020-10-31 16:15 我用keil调试后,在第二张图的221行和223行放断点,在watch中看 i 和 j 的值,然后同样是在走第二遍循环时, i 和 j 的值显示cannot evaluate |
那是while(1)和do-while(1)之间的区别 |
把return 0去掉或者注释掉,程序运行到return它就返回函数口,不再执行下面的语句,也就不会判断while是否为真了 |
feelings 发表于 2020-10-30 17:31 debug调试一下吧 |
xuchaopan 发表于 2020-10-30 15:46 看到了,谢谢 |
如果要一直循环下去,while(1);放在最后使程序停止在这里(进入循环),所以只打印输出1次; |
return 0;这条语句跳出循环了 |
哈哈哈,你如果只需要程序一直循环跑,那么就把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; } } |