在进行编程的时候,if-else和switch-case都可用于条件判断,这篇文章写一写两者的区别。 这里从汇编角度和大家一起分析一下。在网站:https://godbolt.org/上可以查看汇编代码。 1、switch-case 下面这张图是switch-case,左半部分是C代码 ...
switch...case写法: if...else写法: 由此看来,switch有点以空间换时间的意思,而事实上也的确如此。 .当分支较多时,当时用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后直接跳转到那个特定的分支,但是if。。else是遍历所以得可能值,知道找到符合条件的分支。如此看来,switch的效率确实比ifelse要高的多。 .由汇编代码可知道,sw ...
2019-02-01 15:07 0 6893 推荐指数:
在进行编程的时候,if-else和switch-case都可用于条件判断,这篇文章写一写两者的区别。 这里从汇编角度和大家一起分析一下。在网站:https://godbolt.org/上可以查看汇编代码。 1、switch-case 下面这张图是switch-case,左半部分是C代码 ...
switch 比 if/else 效率更高? 在很多人的概念里,switch 的执行效率是比 if/else 高的。依据就是很多人以为的,if/else 是用了多次比较判断,而 switch 是用的跳转表一次跳转。事实真的是这样吗? 考察以下几个例子,switch 改成 if/else 之后效率 ...
在C语言中,教科书告诉我们switch...case...语句比if...else if...else执行效率要高,但这到底是为什么呢?本文尝试从汇编的角度予以分析并揭晓其中的奥秘。 第一步,写一个demo程序:foo.c 第二步,在Ubuntu上使用gcc编译 ...
关于两者的优缺点如下: 1.if else的优缺点 缺点:效率低(相对于switch) 优点:使用灵活,代码空间小 2.switch的优缺点 缺点:不够灵活,switch仅支持 int,char,unsigned char 等基本类型;代码空间大。 优点:代码结构 ...
switch语句是常用的一种java语法,但是往往最基本的,总是最容易被人们忽略。 首先,看下switch语句的基本结构: 从结构上很明显,可以看出case和break一一对应,那么,有一个问题:“是否只有case满足的情况下,才会执行内部的语句呢”,这个答案很多人 ...
int main(void) { int id; scanf_s("%d",&id); switch(id) { case 2: printf("John\n"); break; case 13: printf("Mary\n ...
对于这个问题自己是比较清楚的,在分支比较多时,switch-case的效率肯定比if-else的要高许多,其原理类似于我们在优化某些程序时使用查表来代替算法计算一样。 如果想进一步深究的话,可以查看GCC编译之后的汇编代码。 这里有两篇Blog可以参考一下,致谢两位作者。 1. switch ...
前言 随着项目的迭代,代码中存在的分支判断可能会越来越多,当里面涉及到的逻辑比较复杂或者分支数量实在是多的难以维护的时候,我们就要考虑下,有办法能让这些代码变得更优雅吗? 正文 使用 ...