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灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP