[課業] c語言詢問

看板Examination作者 (fishtory)時間12年前 (2013/05/26 20:39), 編輯推噓3(307)
留言10則, 6人參與, 最新討論串1/2 (看更多)
[課業] 國考課業相關問題,非歷屆考題的討論,如學理觀念的釐清。 #include<stdio.h> int bar (int value) { static int tmp =0; tmp++; value++; return value + tmp;} void main(){ int x=5; printf("%d\n", bar(x)); printf("%d\n", bar(bar(x)));} value的變化 5,5,8,12 輸出 5,8,12 請問有人明白呢? 100年地特統計組 資料處理科 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.194.233.154

05/26 21:13, , 1F
剛看一下,輸出應是7 12
05/26 21:13, 1F

05/26 21:19, , 2F
用程式跑的結果也是7 12
05/26 21:19, 2F

05/26 21:25, , 3F
謝謝你們
05/26 21:25, 3F

05/26 21:29, , 4F
可是請問 怎麼算來的啊? 為什麼到12就停了呢?
05/26 21:29, 4F

05/26 21:36, , 5F
重點在TMP是宣告為STATIC所以BAR離開後還存在不會歸還系統
05/26 21:36, 5F

05/26 21:37, , 6F
第1次:tmp=1+value=6第2次tmp=2+value=6第3次tmp=3+value=9
05/26 21:37, 6F

05/26 21:37, , 7F
副程式bar共呼叫三次,把每次的靜態變數和傳回值列出
05/26 21:37, 7F

05/26 23:11, , 8F
第一次 x=5 tmp=1 bar(x)=7 第二次x=5 bar(x)=8 tmp=2
05/26 23:11, 8F

05/26 23:14, , 9F
第三次 tmp=3 bar(bar(x))=12
05/26 23:14, 9F

05/27 15:42, , 10F
太感謝大家了
05/27 15:42, 10F
文章代碼(AID): #1HeWAO5Y (Examination)
討論串 (同標題文章)
文章代碼(AID): #1HeWAO5Y (Examination)