欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: C語言程序執行順序問題 [打印本頁]

作者: feelings    時間: 2020-10-30 13:43
標題: C語言程序執行順序問題
  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. do
  5. {
  6.     int i,j;
  7.     for (i=0; i<4; i++)
  8.     {
  9.         printf("a");
  10.         for (j=0; j<3; j++)
  11.         {
  12.             printf("b");
  13.         }
  14.     }
  15.     return 0;
  16. }while(1);
  17. }
復制代碼
我認為的程序走的順序是:第一次進入do while循環里,走一次for循環,輸出的是abbbabbbabbbabbb,然后判斷while表達式真假,因為是while(1),按理說應該繼續輸出abbbabbbabbbabbb,繼續循環,但是循環只走了一次,我的邏輯是哪里出錯了,請指出,謝謝

作者: xuchaopan    時間: 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;
}
}
作者: 張小不懂    時間: 2020-10-30 16:10
return 0;這條語句跳出循環了
作者: zhb2004xp    時間: 2020-10-30 16:36
如果要一直循環下去,while(1);放在最后使程序停止在這里(進入循環),所以只打印輸出1次;
作者: feelings    時間: 2020-10-30 17:29
xuchaopan 發表于 2020-10-30 15:46
哈哈哈,你如果只需要程序一直循環跑,那么就把while(1)放在do的位置,do不要就可以了。
像這樣:
# incl ...

看到了,謝謝
作者: feelings    時間: 2020-10-30 17:31
關于循環的程序我還有一個問題,圖在下方
整個程序在板子上運行時,在兩層的for循環語句里,每次第一層走第一遍沒問題,第二層走完十次,再次進行第一層進行判斷循環時,第二層循環有時候走一次,有時候走兩次,或者不走,然后整個程序就停住了,這是什么原因

mmexport1604049449144.jpg (808.97 KB, 下載次數: 103)

總程序運行次序

總程序運行次序

mmexport1604049600489.jpg (382.96 KB, 下載次數: 100)

for循環嵌套

for循環嵌套

作者: 心有浮生    時間: 2020-10-31 16:15
feelings 發表于 2020-10-30 17:31
關于循環的程序我還有一個問題,圖在下方
整個程序在板子上運行時,在兩層的for循環語句里,每次第一層走 ...

debug調試一下吧

作者: YQR123    時間: 2020-10-31 17:04
把return 0去掉或者注釋掉,程序運行到return它就返回函數口,不再執行下面的語句,也就不會判斷while是否為真了
作者: TTQ001    時間: 2020-11-1 06:19
那是while(1)和do-while(1)之間的區別
作者: feelings    時間: 2020-11-2 10:29
心有浮生 發表于 2020-10-31 16:15
debug調試一下吧

我用keil調試后,在第二張圖的221行和223行放斷點,在watch中看 i 和 j 的值,然后同樣是在走第二遍循環時, i 和 j 的值顯示cannot evaluate
作者: feelings    時間: 2020-11-2 15:02
feelings 發表于 2020-10-30 17:31
關于循環的程序我還有一個問題,圖在下方
整個程序在板子上運行時,在兩層的for循環語句里,每次第一層走 ...

當我去掉循環里的延時函數,以及定義pulse里面的延時函數是,就沒有這個問題了,但是我又需要延時操作,要怎么改程序
作者: i_could_have    時間: 2020-11-2 19:59
你把return 0放在while的下一行就行,你現在放在while前面了,當跳出里面的for循環后就執行了return 0,這個程序就直接結束了,不會執行后面的while判斷。
作者: i_could_have    時間: 2020-11-2 20:15
feelings 發表于 2020-11-2 15:02
當我去掉循環里的延時函數,以及定義pulse里面的延時函數是,就沒有這個問題了,但是我又需要延時操作, ...

可能是你延時過長,當下一次采集到的str[11]時,上一次還沒執行完,但是又進行了if判斷。你設置一個標志位,當str[11]滿足條件時,標志位為1,當執行完全部for循環后清除標志位。用這個標志位作為if里面的條件。
作者: cony2020    時間: 2020-11-2 20:15
for循環走完后,有return就直接跳出main函數了,所以只走了一次,把return刪掉




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1