作者dendrobium (石斛蘭)
看板C_and_CPP
標題Re: [問題] 輸出的值
時間Sat Jun 21 12:28:46 2008
考慮少一點
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)
推 LPH66:推一個圖解! 06/21 13:29
推 flashliqu:推一下 06/21 13:57
推 carlcarl:好棒的圖解@@ 06/21 14:09
推 ShaiMo:好精美的圖解@@ 06/21 15:16
推 kikiqqp: 詳細的圖解@@ 06/21 15:39
推 james732:厲害的圖解@@ 06/21 16:38
推 ledia: 超強的圖解@@ 06/21 18:54
推 max8568: 用心的圖解@@ 06/22 17:28