switch-case 执行时间可变吗?

Muc*_*ger 0 c execution-time switch-statement

switch语句是否case在同一执行时间内为任一可能的输入值确定适当的语句?当找到它正在寻找的值时,它是否将输入值与case块进行比较并跳转到适当的值?case

考虑下面的例子。语句是否switch在同一时间执行input = 1input = 256对于后一个值执行速度较慢?

int output, input = 256;
    switch( input )
    {   
        case 1:
            output = 1;
            break;
        case 2:
            output = 2;
            break;
        case 4:
            output = 3;
            break;
        case 8:
            output = 4;
            break;
        case 16:
            output = 5;
            break;
        case 32:
            output = 6;
            break;
        case 64:
            output = 7;
            break;
        case 128:
            output = 8;
            break;
        case 256:
            output = 9;
            break;
        default:
            output = 0;
            break;
    }
Run Code Online (Sandbox Code Playgroud)

Joh*_*ger 5

语句是否switch在同一时间执行input = 1input = 256对于后一个值执行速度较慢?

语言没有指定。

实现通常使用跳转表来实现一些 语句,这使得无论控制值如何,都花费大致相同的时间。然而,它们也可能使用多个分支,就像/树一样,处理某些控制值比处理其他控制值需要更长的时间。他们也可能使用其他策略。switchswitchifelse if

那些在多种可能性中进行选择的人通常是根据必须支持的案例值来进行选择的。