为什么switch...case语句比if...else执行效率高

Posted sinferwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么switch...case语句比if...else执行效率高相关的知识,希望对你有一定的参考价值。

https://www.cnblogs.com/idorax/p/6275259.html

 

switch case 语句多的时候 编译器会将switch case 转为跳转表  (.rodata)

 

 

#include <stdio.h>

static int
foo_ifelse(char c)
{
        if (c == 0 || c == 1) {
                c += 1;
        } else if (c == a || c == b) {
                c += 2;
        } else if (c == A || c == B) {
                c += 3;
        } else {
                c += 4;
        }

        return (c);
}

static int
foo_switch(char c)
{
        switch (c) {
                case 1:
                case 0: c += 1; break;
                case b:
                case a: c += 2; break;
                case B:
                case A: c += 3; break;
                default:  c += 4; break;
        }

        return (c);
}

int
main(int argc, char **argv)
{
        int m1 = foo_ifelse(0);
        int m2 = foo_ifelse(1);
        int n1 = foo_switch(a);
        int n2 = foo_switch(b);
        (void) printf("%c %c %c %c
", m1, m2, n1, n2);
        return (0);
}

 

以上是关于为什么switch...case语句比if...else执行效率高的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用带有两个变量的case / switch语句吗?

React 项目使用 switch ... case ... 语句

React 项目使用 switch ... case ... 语句

switch case语句和if的区别

Python | 基础系列 ·?Python为什么没有switch/case语句?

C语言switch case后如何执行多条命令