#include <stdio.h>int x = 1;int fn1(int x){int y,z;z = 2;y = x+z;printf("y=%d\n",y);這個(gè)為局部變量我知道但是為什么最后y=4它沒有定義x為多少啊return 0;}int main(){fn1 (2);int y = 10;printf("x+y=%d",y+x);getchar();}
3 回答
已采納


frece
TA貢獻(xiàn)36條經(jīng)驗(yàn) 獲得超15個(gè)贊
程序先跑main函數(shù)
在main中調(diào)用fn1, ?把2 當(dāng)參數(shù)傳進(jìn)去, 而在 fn1中, 接收一個(gè)x,這個(gè)x和全局變量x不是同一個(gè)變量,?你定義了一個(gè)z = 2, 所以y = x + z = 2 + 2 = 4
局部變量和全局變量重名的時(shí)候函數(shù)會(huì)優(yōu)先使用局部變量,如果你把fn1函數(shù)定義成 fn1(int m), 函數(shù)里是 y = m + z,你就能理解了吧? 這里只不過是全局變量和局部變量重名了而已
- 3 回答
- 0 關(guān)注
- 1761 瀏覽
添加回答
舉報(bào)
0/150
提交
取消