生信人

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

0

收听

12

听众

318

主题
发表于 2024-5-16 16:18:25 | 查看: 296| 回复: 0

背景

学习C语言语法,switch时对于case的使用存在疑问,如下:

// 009.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "stdlib.h"
//使用它得加个头文件#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
    int a = 1;
    switch(a)
    {
    case 1:
        printf("1111\n");
        break;
    case 2:
        printf("2222\n");
        break;
    case 3:
        printf("3333\n");
        break;
    default:
        printf("????\n");
    }

    system("pause");
    return 0;
}

以上代码输出1111,因为判断了符合1的情况。 当我们注释掉case1的braek后

    case 1:
        printf("1111\n");
        //break;

输出1111和2222. 当注释掉case1和case2的break后

    case 1:
        printf("1111\n");
        //break;
    case 2:
        printf("2222\n");
        //break;

输出1111,2222和3333。

原因

这是switch语句的语法。除了符合case的判断外。

尽管只符合case1,我们单独注释break,也会继续执行case2和3的输出。

在C语言中,switch语句会匹配第一个符合条件的case,并且一旦进入某一个case,如果没有break语句,程序会继续执行下面所有case的语句,直到遇到break语句或者switch语句结束。所以即使没有break语句,程序也会继续执行下面的case语句。

收藏回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|生信人 ( 萌ICP备20244422号 )

GMT+8, 2024-11-21 17:34 , Processed in 0.078332 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表