亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

局部與全局問題在里面大神來教一下小白啊

局部與全局問題在里面大神來教一下小白啊

C C++
悶a 2017-05-03 19:15:28
#include <stdio.h>int x = 1;int fn1(int x){int y,z;z = 2;y = x+z;printf("y=%d\n",y);這個為局部變量我知道但是為什么最后y=4它沒有定義x為多少啊return 0;}int main(){fn1 (2);int y = 10;printf("x+y=%d",y+x);getchar();}
查看完整描述

3 回答

已采納
?
ruibin

TA貢獻358條經驗 獲得超213個贊

int x=1.x為在外層作用域,內層可以直接使用
查看完整回答
1 反對 回復 2017-05-03
  • 悶a
    悶a
    對呀那y就應該=3啦啊
  • ruibin
    ruibin
    但是,看這里fn1 (2);然后int fn1(int x)什么意思呢,定義了一個參數為x,現在你傳入一個2此時函數內部的x就是2.y等于4 如果你這樣寫fn1() 此時x的y就等于3.
  • 悶a
    悶a
    哦哦哦對對對我真的是傻啊我去自定義函數我沒有往后面想??!謝謝啦??!
?
frece

TA貢獻36條經驗 獲得超15個贊

程序先跑main函數

在main中調用fn1, ?把2 當參數傳進去, 而在 fn1中, 接收一個x,這個x和全局變量x不是同一個變量,?你定義了一個z = 2, 所以y = x + z = 2 + 2 = 4

局部變量和全局變量重名的時候函數會優先使用局部變量,如果你把fn1函數定義成 fn1(int m), 函數里是 y = m + z,你就能理解了吧? 這里只不過是全局變量和局部變量重名了而已

查看完整回答
2 反對 回復 2017-05-03
  • 3 回答
  • 0 關注
  • 1744 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號