[问题] 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