栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言 | Switch的错误用法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言 | Switch的错误用法

C语言 | Switch的错误用法 1.示例(问题)
void FlowWndPlay_DownKey3Ctrl(void)
{
	switch (g_PlbData.State)
	{
        case PLB_ST_PLAY_MOV:
        case PLB_ST_FWD_MOV:
        case PLB_ST_BWD_MOV:
    	{
            UxStatic_SetData(&UIFlowWndPlay_VKEY3CCtrl, STATIC_VALUE, ICON_IC_BAR_PLAY);
    	    break;
    	}
    	case PLB_ST_PAUSE_MOV:
    	{
            UxStatic_SetData(&UIFlowWndPlay_VKEY3CCtrl, STATIC_VALUE, ICON_IC_BAR_RIGHT_OFF);
    	    break;
    	}
    	case PLB_ST_FULL:
    	{
            UxStatic_SetData(&UIFlowWndPlay_VKEY3CCtrl, STATIC_VALUE, ICON_IC_BAR_RIGHT);
    	    break;
    	}
        UxCtrl_SetShow(&UIFlowWndPlay_VKEY3CCtrl, TRUE);
	}
}

实际运行时,当case里面匹配执行后;UxCtrl_SetShow(&UIFlowWndPlay_VKEY3CCtrl, TRUE)这一句将不会运行,这就脱离了我们的实际目的。

改写如下:

void FlowWndPlay_UpKey2Ctrl(void)
{
    UINT32 uiPBFileFmt;
	PB_GetParam(PBPRMID_CURR_FILEFMT, &uiPBFileFmt);

	switch (g_PlbData.State)
	{
        case PLB_ST_PLAY_MOV:
        case PLB_ST_FWD_MOV:
        case PLB_ST_BWD_MOV:
    	{
            UxStatic_SetData(&UIFlowWndPlay_VKEY2CCtrl, STATIC_VALUE, ICON_IC_BAR_PLAY_FAST);
    	    break;
    	}
    	case PLB_ST_PAUSE_MOV:
    	{
            UxStatic_SetData(&UIFlowWndPlay_VKEY2CCtrl, STATIC_VALUE, ICON_IC_BAR_LEFT_OFF);
    	    break;
    	}
    	case PLB_ST_FULL:
    	{
            UxStatic_SetData(&UIFlowWndPlay_VKEY2CCtrl, STATIC_VALUE, ICON_IC_BAR_LEFT);
    	    break;
    	}
	}

	if (uiPBFileFmt & PBFMT_JPG){
        UxStatic_SetData(&UIFlowWndPlay_VKEY2CCtrl, STATIC_VALUE, ICON_IC_BAR_MENU);
    }

    UxCtrl_SetShow(&UIFlowWndPlay_VKEY2CCtrl, TRUE);
}

2.实验 测试1:
#include 

int main(int argc, char* argv[])
{
    int a = 2;

    switch(a)
    {
        case 1:
        printf("1n");
            break;

        case 2:
        printf("2n");
            break;

        printf("3n");
    }

    return 0;
}
运行:
[lanfeiye@fly-vm cStudy]$ ./testSwitch
2
测试2:
#include 

int main(int argc, char* argv[])
{
    int a = 3;

    switch(a)
    {
        case 1:
        printf("1n");
            break;

        case 2:
        printf("2n");
            break;

        printf("3n");
    }

    printf("4n");

    return 0;
}
运行:
[lanfeiye@fly-vm cStudy]$ make testSwitch
gcc -o testSwitch testSwitch.c -g -Wall
[lanfeiye@fly-vm cStudy]$ ./testSwitch
4
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767533.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号