以下程序的输出结果是 main( ) { int x=10,y=10,i; for(i=0;x > 8;y=++i) printf("%d,%d ",x--,y); }(3分) A、 B、 C、 D、 A、 10 1 9 2 B、 9 8 7 6 C、10 9 9 0 D、10 10 9 1
D、10 10 9 1第一次执行for(i=0;x > 8;y=++i) // 此时x = 10, 这句y=++i要循环体执行完后执行,即执行完printf后,在执行到for时。printf("%d,%d ",x--,y); // 先输出后计算,所以输出10,10,之后x执行减一,x=9.第二次执行for(i=0;x > 8;y=++i) // 此时x=9,i=1,y=1,printf("%d,%d ",x--,y); // x=9,y=1输出9,1,结束后x=8.第二次执行for(i=0;x > 8;y=++i) //由于x=8,不满足条件所以退出循环。
我简单的分析下:x,y 均初始化为10, 第一次循环, i=0; (x=10)>8; y=1 输出10, 1;第二次循环,i=1; (x=9)>8; y=2; 输出9, 2;第三次(x=8)>8 不成立, 退出;此题考察你 ++ 运算符, x++ : 先运算x, 再+1;++x : 先+1, 再运算x;-- 运算符同理;(另外说一句, 以后提问最好给分, 一般没人会高兴回答的)
D、10 10 9 1 我补充一点 y出现过2次 y=10,y=++i 这是C函数变量作用域 外层代码块的变量总是有效的,除非内层的代码对该变量名进行了重新定义,如果内层代码对外层代码块中的变量名进行了重新定义,那么在此内层代码块中,外层代码块的变量就被隐藏