bycj.net
当前位置:首页 >> int sum=0,i; For(i=1;i<=4;i++){ switCh(i){ >>

int sum=0,i; For(i=1;i<=4;i++){ switCh(i){

sum=0 i=1 进入 case 1, 执行: sum=sum+2; sum=sum+4; sum=sum+16; 退出开关语句; i=2 进入 case 2, 执行: sum=sum+4; sum=sum+16; 退出开关语句; i=3 进入 case 3, 执行: sum=sum+16; 退出开关语句; i=4 进入 退出开关语句; sum=2+4+16+...

我只知道最后i肯定变成了5 解析如下: 在switch语句里有i++,所以for循环的计数变量i在循环体内就被改动,导致循环提前退出。当for循环从0开始循环,switch语句有匹配的 标号,自匹配的标号到swich语句结束,执行各个case语句,当switch语句结束...

楼主你贴的代码有问题,我估计是这样的,这样算的就是31 #include main() { int a=0,i; for(i=1;i

楼主的代码有问题: for(i=j;i

/* i=0时从case 0开始输出 因为没有break所以case0 之后的语句都执行 所以输出000 i=1时,输出default部分 所以1 i=2时,从case2开始, 之后的语句也执行 输出22 运行结果是: 000122 */

switch(i) { case 0:s+=i;break;//这里的break;是对switch有作用的,和外面的for循环没关系 case 1:s+=i;break; case2:s+=i;break; default:s+=2; } i 0 1 2 3 4 0 1 2 2 2 所以最后s=7

由于各分支语句没有以break结尾,导致会在前面分支入口后继续顺序执行后面的语句 i=0; 因为没有case 0分支,会直接走default:执行i+=2;[i=2],然后 顺序执行i+=1;[i=3],顺序执行i+=8;[i=11],顺序执行i+=4;[i=15],然后结束switch的执行

i的值为4,具体过程为,执行完case 2后没有break语句跳出,继续执行case 3,遇到break跳出。这里要注意的是,若没有break语句,在找到第一个符合条件的case之后,除了执行这个case后所跟的那条语句之外,还将不加判断的继续执行这个switch结构中...

运行结果为0,1,2,5 你想问什么?

switch(i){case0:s+=i;break;//这里的break;是对switch有作用的,和外面的for循环没关系case1:s+=i;break;case2:s+=i;break;default:s+=2;}i0123401222所以最后s=7

网站首页 | 网站地图
All rights reserved Powered by www.bycj.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com