TransCSI 板


LINE

int a=1,b=2; int add(int x,int y) { int a=100; a=x+y; b=x-y; printf("a=%d,b=%d\n",a,b); return(x*y); } void main(void) { int a=10 a++;b++; printf(("a=%d,b=%d\n",a,b); { int b=50 a++;b++; printf(("a=%d,b=%d\n",a,b); } b=add(a,b); printf(("a=%d,b=%d\n",a,b); } 想請問四次印出來的結果是 a=15,b=9 a=11,b=3 a=12,b=51 a=12,b=36 這樣嗎? 另外再問一下 add跟main有宣告a,所以a會另外產生位置給區域變數裡的a 可是副程式ab都有動到,為什麼a是動區域變數b卻是動全域變數? 拜託大家了,謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.71.78.79
1F:→ longlongint:a=11,b=3 06/29 17:44
2F:→ longlongint:a=12,b=51 06/29 17:45
3F:→ longlongint:a=15,b=9 06/29 17:45
4F:→ longlongint:a=12,b=36 06/29 17:45
5F:→ longlongint:至少我編譯出來是這樣(汗 06/29 17:45
6F:→ longlongint:一個變數的生命週期只在宣告的範圍內 block { } 06/29 17:46
7F:→ longlongint:若以變數名稱叫一個變數,以生命範圍最小的變數優先 06/29 17:47
8F:→ longlongint:把最大的a改成AG main裡面的a 改成AM 以此類推 06/29 17:48
9F:→ longlongint:然後你去想想那個a是哪個a b是哪個b 06/29 17:48
10F:→ longlongint:更正 是"可參考到的變數裡面" 生命範圍最小的那個 06/29 17:49
11F:→ longlongint:所以add動到的是全區的b 06/29 17:49
12F:→ longlongint:有錯請鞭... 06/29 17:56
13F:→ jtafstn:原來如此@@ 謝謝你> < 06/29 18:12
14F:→ longlongint:不客氣~~ 06/29 18:44
對不起我又有問題了||| int p=10; main ( ) { int sub1(void); int sub2(int); int sub3(int *); int a=5,b=8,i; for(i=1;i<=3;i++) { sub2(a);sub3(&b); printf("%d th time %d,%d,%d,%d\n",i,sub1(),a,b,p); } } int sub1(void) { static int x=0; a++;return (x); } void sub2(int y); { y--;p-=y; } void sub3(int *z) { *z+=1; } 輸出的部分我算出來是 1 th time1 5 9 1 可是答案給 1 th time1 5 9 6 想問一下p在整個程式的變化過程詳細 還想問sub3(&b)跟sub3(int *)的部分 是先把z指向p 然後b又指向z 所以b會取到p的值 是這樣嗎@@ 不好意思麻煩了 ※ 編輯: jtafstn 來自: 219.71.78.79 (06/29 22:01)
15F:→ longlongint:sub1裡面有a++所以沒辦法編譯 我可以把它修成x++嗎? 06/30 21:32
16F:→ longlongint:底下的sub2不用分號 06/30 21:33
17F:→ longlongint:執行結果 06/30 21:34
18F:→ longlongint:1th time 1,5,9,6 06/30 21:34
19F:→ longlongint:2th time 2,5,10,2 06/30 21:34
20F:→ longlongint:3th time 3,5,11,-2 06/30 21:35
21F:→ longlongint:dev c++下載網址 06/30 21:35
22F:→ longlongint:網址太長了 google找dev c++ 06/30 21:36
23F:→ longlongint:安裝之後 把程式碼前面加標頭檔 06/30 21:36
24F:→ longlongint:main()的最後面加 system("pause"); 06/30 21:36
25F:→ longlongint:編譯看看 06/30 21:36
26F:→ longlongint:sub2()是傳值所以a不會變 06/30 21:38
27F:→ longlongint:sub3(&b)是傳地址 所以改變z會動到b 06/30 21:39
28F:→ longlongint:sub1() 因為x 是static函數,值會被保留到以後的呼叫 06/30 21:39
29F:→ longlongint:p是全區變數你應該很了解了@@+ 06/30 21:40
30F:→ longlongint:x每次呼叫皆會加一 所以是 1 2 3 06/30 23:28
31F:→ longlongint:a完全不變 一直是5 06/30 23:28
32F:→ longlongint:b每次都+1 所以 9 10 11 06/30 23:29
33F:→ longlongint:p每次都減掉(a-1) 所以一直減四 所以是 6 2 -2 06/30 23:30
34F:→ longlongint:其實實際寫程式不會搞得這麼混亂,誤導看碼的人幹嘛XD 06/30 23:36







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP