看板 Examination 關於我們 聯絡資訊
[課業] 國考課業相關問題,非歷屆考題的討論,如學理觀念的釐清。 #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
Paradise5566:剛看一下,輸出應是7 12 05/26 21:13
SeekTheBest:用程式跑的結果也是7 12 05/26 21:19
fishtory:謝謝你們 05/26 21:25
fishtory:可是請問 怎麼算來的啊? 為什麼到12就停了呢? 05/26 21:29
malowda:重點在TMP是宣告為STATIC所以BAR離開後還存在不會歸還系統 05/26 21:36
leiyan:第1次:tmp=1+value=6第2次tmp=2+value=6第3次tmp=3+value=9 05/26 21:37
Paradise5566:副程式bar共呼叫三次,把每次的靜態變數和傳回值列出 05/26 21:37
asdd:第一次 x=5 tmp=1 bar(x)=7 第二次x=5 bar(x)=8 tmp=2 05/26 23:11
asdd:第三次 tmp=3 bar(bar(x))=12 05/26 23:14
fishtory:太感謝大家了 05/27 15:42