if else與switch區別


一、if-else

只是單純地一個接一個比較;if...else每個條件都計算一遍;

二、switch

使用了Binary Tree算法;絕大部分情況下switch會快一點,除非是if-else的第一個條件就為true

編譯器編譯switch與編譯if...else...不同。不管有多少case,都直接跳轉,不需逐個比較查詢;switch只計算一次值,然后都是test , jmp,

有很多else if的時候,用switch case比較清晰

 

switch使用查找表的方式決定了case的條件必須是一個連續的常量。而if-else則可以靈活的多。

三、總結

當只有分支比較少的時候,if效率比switch高(因為switch有跳轉表)   
分支比較多,那當然是switch

四、switch case語句

 

switch (表達式){
case 值1 : 語句1
break;

case 值2 : 語句2
break;

...
default : 語句n
break;
}

從表達式值等於某個case語句后的值開始,它下方的所有語句都會一直運行,直到遇到一個break為止。隨后,switch語句將結束,程序從switch結束大括號之后的第一個語句繼續執行,並忽略其他case。
假如任何一個case語句的值都不等於表達式的值,就運行可選標簽default之下的語句。
假如表達式的值和任何一個case標簽都不匹配,同時沒有發現一個default標簽,程序會跳過整個switch語句,從它的結束大括號之后的第一個語句繼續執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM