[問題] 98台聯最後一題

作者: mic790909 (阿翰)   2011-05-17 20:16:55
98台聯大的最後一題
int x=2;
int main(){
int x=1,y=0;
for(int x=0;x<2;x++){
int y=x+1;
}
std::cout<<y<<std::end1;
return 0;
}
選項有
(a)2 (b)1 (c)0 (d)a value which is greater than 2 (e)none of the above
補習班的老師解答是選(e)
可是解答過程我看不太懂 想請板上大大幫我解惑
可以的話麻煩盡量詳細說明 感謝!
作者: note35 (kir)   2011-05-17 21:48:00
你可以自己開C 用除錯的方式看看 會比較清楚
作者: bibo9901 (function(){})()   2011-05-17 21:53:00
for{}裡的int y在離開{}後被消滅
作者: mic790909 (阿翰)   2011-05-17 23:15:00
嗯 那被消滅之後不是應該是要y=0嗎? 因為我非本科系生所以開C除錯可能也是看不太懂 抱歉@@
作者: darama (DoRaMa)   2011-05-17 23:47:00
我覺得答案是零欸 而且我實際測試也是印出零因為全域變數跟區域變數重疊的時候 全域變數會被區域變數遮蔽另外 是endl不是end1:)
作者: EEspresso (我要吃!!!)   2011-05-18 00:01:00
0 我用DEV跑過XD
作者: note35 (kir)   2011-05-18 00:47:00
這題是在考二樓說的那個 迴圈內又另外宣告一個y跳出後變回0說答案是E也不會錯 因為C的編譯器會沒辦法編譯
作者: mic790909 (阿翰)   2011-05-18 07:10:00
好的了解~感謝各位大大的回答:D

Links booklink

Contact Us: admin [ a t ] ucptt.com