Re: [問題] 輸出的值
考慮少一點
char aa[] = "ABC"; 的情況
call main()
┌────────┐
│main() │
│{ │
│ reverse(); │
│ │
│ │
└────────┘
call reverse()
┌────────┐
│main() │
│{ │
│ ┌───────────────────┐
│ │reverse() │
│ │{ │
│ │ char ca; │
└─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A'
│ reverse(); │
│ │
└───────────────────┘
call reverse()
┌────────┐
│main() │
│{ │
│ ┌───────────────────┐
│ │reverse() │
│ │{ │
│ │ char ca; │
└─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A'
│ ┌───────────────────┐
│ │reverse() │
└──│{ │
│ char ca; │
│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 1 , ca = 'B'
│ reverse(); │
│ │
└───────────────────┘
call reverse()
┌────────┐
│main() │
│{ │
│ ┌───────────────────┐
│ │reverse() │
│ │{ │
│ │ char ca; │
└─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A'
│ ┌───────────────────┐
│ │reverse() │
└──│{ │
│ char ca; │
│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 1 , ca = 'B'
│ ┌───────────────────┐
│ │{ │
└──│ char ca; │
│ if ( (ca = aa[++in_i]) != '\0' ) { │// in_i = 2
│ reverse(); │// ca = 'C'
│ │
└───────────────────┘
call reverse()
┌────────┐
│main() │
│{ │
│ ┌───────────────────┐
│ │reverse() │
│ │{ │
│ │ char ca; │
└─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A'
│ ┌───────────────────┐
│ │reverse() │
└──│{ │
│ char ca; │
│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 1 , ca = 'B'
│ ┌───────────────────┐
│ │reverse() │
└──│{ │
│ char ca; │// in_i = 2
│ if ( (ca = aa[++in_i]) != '\0' ) { │// ca = 'C'
│ ┌───────────────────┐
│ │reverse() │
└──│{ │
│ char ca; │
/*in_i = 3,ca = '\0'*/│ if ( (ca = aa[++in_i]) != '\0' ) { │
│ reverse(); │
│ printf("%c", ca); │
│ } /* 上面這兩行,並沒有被執行 */ │
│} /* 因為 ca == '\0' is true */ │
└───────────────────┘
leave reverse()
┌────────┐
│main() │
│{ │
│ ┌───────────────────┐
│ │reverse() │
│ │{ │
│ │ char ca; │
└─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A'
│ ┌───────────────────┐
│ │reverse() │
└──│{ │
│ char ca; │
│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 1 , ca = 'B'
│ ┌───────────────────┐
│ │reverse() │
└──│{ │
│ char ca; │
│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 2
│ ; /* reverse() */ │
│ printf("%c", ca); /* print 'C' */ │//ca = 'C'
│ } │
│} │
└───────────────────┘
leave reverse()
┌────────┐
│main() │
│{ │
│ ┌───────────────────┐
│ │reverse() │
│ │{ │
│ │ char ca; │
└─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A'
│ ┌───────────────────┐
│ │reverse() │
└──│{ │
│ char ca; │
│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 1 , ca = 'B'
│ ; /* reverse() */ │
│ printf("%c", ca); /* print 'B' */ │
│ } │
│} │
└───────────────────┘
leave reverse()
┌────────┐
│main() │
│{ │
│ ┌───────────────────┐
│ │reverse() │
│ │{ │
│ │ char ca; │
└─│ if ( (ca = aa[++in_i]) != '\0' ) { │//in_i = 0 , ca = 'A'
│ ; /* reverse() */ │
│ printf("%c", ca); /* print 'A' */ │
│ } │
│} │
└───────────────────┘
leave reverse()
┌──────────┐
│main() │
│{ │
│ ; /* reverse() */ │
│ printf("\n"); │
│ │
│ │
└──────────┘
所以他就會從後面開始印囉
謝謝收看
有錯煩請指正, 感謝你!
--
貓
http://www.onlypet.com.tw/dendrobium
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.116.12.212
※ 編輯: dendrobium 來自: 59.116.12.212 (06/21 12:32)
※ 編輯: dendrobium 來自: 59.116.12.212 (06/21 12:36)
推
06/21 13:29, , 1F
06/21 13:29, 1F
推
06/21 13:57, , 2F
06/21 13:57, 2F
推
06/21 14:09, , 3F
06/21 14:09, 3F
推
06/21 15:16, , 4F
06/21 15:16, 4F
推
06/21 15:39, , 5F
06/21 15:39, 5F
推
06/21 16:38, , 6F
06/21 16:38, 6F
推
06/21 18:54, , 7F
06/21 18:54, 7F
推
06/22 17:28, , 8F
06/22 17:28, 8F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章