switch 與if 語句的區別新發現

2021-09-30 12:37:35 字數 482 閱讀 7788

之前在做專案的時候遇到乙個崩潰的原因。初始的時候崩潰的原因顯示為vector中的值為空,而且會出現亂碼。舉個例子:

enum  ******

int a,

int b,

vectora;

if(a.a == 1 && a.b == 2)

可能在a的賦值**現亂碼,得到的值會超過int型的所能表示的數值,改為double型也不行。這樣出現亂碼之後,if()語句裡邊的語句塊依然會被執行,就會做不到防禦的效果。

可能這裡說得不是很清楚,大概的意思就是if()裡邊判斷的值遠遠超過型別本身的時候可能就達不到判斷的效果,不管a.a和a.b的值是否滿足都會執行if()語句塊。

switch()語句的話,就不同,它可能也會執行switch語句,但是它執行的是switch語句中的default語句,不會走case 1 和case 2裡邊的語句塊。

這是在做專案時候遇到的一點問題,自己之前也沒有發現。可能也有理解上的錯誤,希望指出。

switch和if語句的選擇區別

switch和多重選擇結構的區別和共同點 相同點在於 都是用來處理多分支條件的結構。不同點在於 switch只能處理等值條件判斷的情況 if選擇結構 基本if選擇結構 處理單一或組合條件的情況 if else選擇結構 處理簡單的條件分支情況 多重if選擇結構 處理複雜的條件分支情況 巢狀if選擇結構...

if與switch的小區別

switch語句與if語句 switch幾個特點 什麼時候用switch 當範圍較小且為資料char,int,byte,short這四種型別時,用switch語句更好 因為switch語句的系統編譯效率相對if來說效率稍高。什麼時候用if 但是如果資料比較多,或者為boolean型別時。用if更好 ...

switch與if else的區別

單從jvm的執行效率上講的話,switch的執行效率要高於if語句 原因在於 switch語句在執行時,首先會生成乙個 跳轉表 來指示實際的case分支的位址,而這個 跳轉表 的索引號與swtich中的case值是相等的,這樣的話,switch就不用像if else那樣,遍歷所有的條件,直至找到正確...