在進行編程的時候,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 ...
前言 隨着項目的迭代,代碼中存在的分支判斷可能會越來越多,當里面涉及到的邏輯比較復雜或者分支數量實在是多的難以維護的時候,我們就要考慮下,有辦法能讓這些代碼變得更優雅嗎? 正文 使用 ...