2018.01.11 | C与C++ | 1 赞 | 0 条评论


请注意,本文编写于 1012 天前,最后修改于 533 天前,其中某些信息可能已经过时。

事件的起因是同学甩来的一道题,问程序的输出结果

#include<stdio.h>
int main(void){
    int i;
    for(i=1;i<10;i++){
        switch (i%3) {
            case 0:
                i+=3;
                break;
            case 1:
                i+=4;
                continue;
        }
        i++;
    }
    printf("%d\n",i);
}

查了一些资料最终也弄明白了这个题,答案是11。

问题的关键在于循环和switch中的break和continue的不同。在switch中是响应break但不响应continue的,换句话说,在switch中使用break,break是针对switch的;而在switch中使用continue,continue是针对for的。

具体到这道题来说,第一次循环所响应的是case 1,i变成5后直接continue,i自增为6后继续循环;此时响应的是case 0,i自增为9后break出switch,执行接下来的语句i++,自增为10;之后在下一次for循环开始时自增为11,不满足i<10条件,跳出for循环。最终输出的i值即为11。

参考资料:

http://blog.csdn.net/lvyuan30276/article/details/9383221

本文链接:https://idealclover.top/archives/330/

本作品由 idealclover 采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可,转载请注明出处。

标签: void, 共享

1

没有评论 T^T


🤔关于我
翠翠 idealclover
南京大学商学院 2016 级本科生
了解更多
🏠关于博客
基于 Typecho 博客框架
使用个人创作的 clover 主题
💾博客小程序
💸支持我