case 的執行過程:
-
計算 case expression,只計算一次,然后按照代碼順序從上向下和 case item 逐個比較
-
比較過程中,如果有 default 分支,則暫時先忽略
-
如果有某個 item 和 expression 匹配,則執行此 item 下的語句
-
如果匹配失敗,有 default 分支,則執行該 default 分支
-
如果匹配失敗,沒有 default 分支,則終止
這個按照順序比較的過程就是可能導致 priority encoder 的原因