c語言詢問 - 考試

Table of Contents



[課業] 國考課業相關問題,非歷屆考題的討論,如學理觀念的釐清。

#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年地特統計組 資料處理科

--

All Comments

Enid avatarEnid2013-05-30
剛看一下,輸出應是7 12
Gary avatarGary2013-06-01
用程式跑的結果也是7 12
Susan avatarSusan2013-06-01
謝謝你們
Elizabeth avatarElizabeth2013-06-04
可是請問 怎麼算來的啊? 為什麼到12就停了呢?
Susan avatarSusan2013-06-07
重點在TMP是宣告為STATIC所以BAR離開後還存在不會歸還系統
Cara avatarCara2013-06-12
第1次:tmp=1+value=6第2次tmp=2+value=6第3次tmp=3+value=9
Elvira avatarElvira2013-06-12
副程式bar共呼叫三次,把每次的靜態變數和傳回值列出
Kama avatarKama2013-06-17
第一次 x=5 tmp=1 bar(x)=7 第二次x=5 bar(x)=8 tmp=2
Elvira avatarElvira2013-06-20
第三次 tmp=3 bar(bar(x))=12
Zanna avatarZanna2013-06-23
太感謝大家了