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